{
printf("IP adderss %d :%s\n",i+1,inet_ntoa(*(struct in_addr *)h->h_addr_list[i]))
}
这个地方错了。
struct hostent
{
char*h_name
char**h_aliases
int h_addrtype
int h_length
char**h_addr_list
#define h_addr h_addr_list[0]
}
h_addr_list :表示的是主机的ip地址
所以应该是直接打印:
printf("IP adderss:%s\n",inet_ntoa(*(struct in_addr *)h->h_addr_list))
感觉问题出在char buf[MAXSIZE] 怀疑可能由于编译器或其他原因,系统并没有为buf分配内存空间。
导致在fgets的时候出现段错误
可以通过malloc分配空间,或者使用 static char buf[MAXSIZE] 的方式试一下,看看是不是这个问题。
inet_ntoa()返回的就是char * 我是在linux上 如果出现这种警告 说明你的头文件是不全的 就是没有加上包含这个函数的头文件 在linux上为#include<arpa/inet.h>欢迎分享,转载请注明来源:内存溢出
评论列表(0条)