更新时间:2024-06-27 21:09
inet_ntoa()是编程语言,功能是将网络地址转换成“.”点隔的字符串格式。
函数功能:将网络地址转换成“.”点隔的字符串格式。
所需库: winsock.h
也可以使用:
即在程序开头写:
#include
函数原型: char FAR* PASCAL FAR inet_ntoa( struct in_addr in);
MSDN上本函数的原型描述为:unsigned long inet_addr( __in const char *cp);
in:一个表示Internet主机地址的结构。
注释:
本函数将一个用in参数所表示的Internet地址结构转换成以“.” 间隔的诸如“a.b.c.d”的字符串形式。请注意inet_ntoa()返回的字符串存放在WINDOWS套接口实现所分配的内存中。应用程序不应假设该内存是如何分配的。在同一个线程的下一个WINDOWS套接口调用前,数据将保证是有效。
返回值:
若无错误发生,inet_ntoa()返回一个字符指针。否则的话,返回NULL。其中的数据应在下一个WINDOWS套接口调用前复制出来。
相关函数:inet_addr().
linux下:
函数声明:char *inet_ntoa(struct in_addr in);
将一个32位网络字节序的二进制IP地址转换成相应的点分十进制的IP地址(返回点分十进制的字符串在静态内存中的指针)。
所在头文件:
//end linux 下
程序示例1:
下面这个例子来自MSDN:
程序示例2:
实际运行结果如下:
192.168.0.74 : 192.168.0.74 //从这里可以看出,printf里的inet_ntoa只运行了一次。
192.168.0.74
211.100.21.179
inet_ntoa返回一个char *,而这个char *的空间是在inet_ntoa里面静态分配的,所以inet_ntoa后面的调用会覆盖上一次的调用。第一句printf的结果只能说明在printf里面的可变参数的求值是从右到左的,仅此而已。
程序示例3:
将示例2修改一下,使其运行在VC++6.0下:
程序示例4:
将示例1修改一下,使其运行在VC2008下: