inet_ntop.c

来自「这是一个完全开放的」· C语言 代码 · 共 66 行

C
66
字号
#ifdef HAVE_CONFIG_H# include "config.h"#endif#if !defined(HAVE_INET_NTOP) && defined(WIN32)#include "ac-stdint.h"#include "ip6_misc.h"#include <stdio.h>#include <errno.h>#ifndef INET_ADDRSTRLEN#define INET_ADDRSTRLEN    16#endifstatic const char *inet_ntop_v4 (const void *src, char *dst, size_t size){    const char digits[] = "0123456789";    int i;    struct in_addr *addr = (struct in_addr *)src;    u_long a = ntohl(addr->s_addr);    const char *orig_dst = dst;    if (size < INET_ADDRSTRLEN) {	errno = ENOSPC;	return NULL;    }    for (i = 0; i < 4; ++i) {	int n = (a >> (24 - i * 8)) & 0xFF;	int non_zerop = 0;	if (non_zerop || n / 100 > 0) {	    *dst++ = digits[n / 100];	    n %= 100;	    non_zerop = 1;	}	if (non_zerop || n / 10 > 0) {	    *dst++ = digits[n / 10];	    n %= 10;	    non_zerop = 1;	}	*dst++ = digits[n];	if (i != 3)	    *dst++ = '.';    }    *dst++ = '\0';    return orig_dst;}const char *inet_ntop(int af, const void *src, char *dst, size_t size){    switch (af) {    case AF_INET :	return inet_ntop_v4 (src, dst, size);    default :	errno = WSAEAFNOSUPPORT;	return NULL;    }}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?