gpt4 book ai didi

c - 使用 gethostbyname

转载 作者:行者123 更新时间:2023-12-04 05:04:46 27 4
gpt4 key购买 nike

我刚刚开始使用 C 进行编程。这应该是一个简单的程序,但我遇到了段错误。我将不胜感激任何帮助

问候,

胡安

#include <string.h>

#include <stdio.h>
#include <stdlib.h>
#include<errno.h>
#include<netdb.h>
#include<sys/socket.h>
#include<netinet/in.h>


int main(int argc, char **argv)
{

struct hostent *hp;
struct in_addr **addr_list;

if ((hp = gethostbyname("www.yahoo.ca")) == NULL)
{
printf("gethostbyname() failed\n");
}
else
{
printf("Official name = %s\n", hp->h_name);

addr_list = (struct in_addr **)hp->h_addr_list;

unsigned int i = 0;
while (addr_list[i] != NULL)
{
printf("%s\n",inet_ntoa(*((struct in_addr *)hp->h_addr)));
i++;

}
}
}

以下是该程序的调用方式:
administrator@ubuntu:~/Documents$ ./a.out
Official name = any-rc.a01.yahoodns.net
Segmentation fault (core dumped)
administrator@ubuntu:~/Documents$

最佳答案

而不是 hp->h_addr你可能想要:

printf("%s\n", inet_ntoa(*addr_list[i]));

作为旁注, gethostbyname 已过时:您应该使用 getaddrinfo .你会注意到,新版本的标准甚至没有提到 gethostbyname .

关于c - 使用 gethostbyname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15670713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com