Linux 查看域名信息 h_addr_list[]Segmentation fault (core dumped) 为什么出这种错

Linux 查看域名信息 h_addr_list[]Segmentation fault (core dumped) 为什么出这种错,第1张

for(i=0i <h->h_lengthi++)

{

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_length 表示的是主机ip地址的长度

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>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7576209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存