inet_ntoa()

王朝百科·作者佚名  2010-01-05  
宽屏版  字体: |||超大  

简述:

将网络地址转换成“.”点隔的字符串格式。

#include <winsock.h>

char FAR* PASCAL FAR inet_ntoa( structin_addrin);

in:一个表示Internet主机地址的结构。

注释:

本函数将一个用in参数所表示的Internet地址结构转换成以“.” 间隔的诸如“a.b.c.d”的字符串形式。请注意inet_ntoa()返回的字符串存放在WINDOWS套接口实现所分配的内存中。应用程序不应假设该内存是如何分配的。在同一个线程的下一个WINDOWS套接口调用前,数据将保证是有效。

返回值:

若无错误发生,inet_ntoa()返回一个字符指针。否则的话,返回NULL。其中的数据应在下一个WINDOWS套接口调用前复制出来。

测试代码如下

include <stdio.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <string.h>

int main(int aargc, char* argv[])

{

struct in_addr addr1,addr2;

ulong l1,l2;

l1= inet_addr("192.168.0.74");

l2 = inet_addr("211.100.21.179");

memcpy(&addr1, &l1, 4);

memcpy(&addr2, &l2, 4);

printf("%s : %s

", inet_ntoa(addr1), inet_ntoa(addr2)); //注意这一句的运行结果

printf("%s

", inet_ntoa(addr1));

printf("%s

", inet_ntoa(addr2));

return 0;

}

实际运行结果如下:

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里面的可变参数的求值是从右到左的,仅此而已。

参见:

inet_addr().

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有