0
#include <netdb.h>
#include <stdio.h>
#include <sys/socket.h>
int main(int argc, char **argv)
{
char *ptr = NULL;
struct hostent *hptr = NULL;
struct in_addr *hipaddr = NULL;
ptr = argv[1];
inet_aton(ptr,hipaddr);
hptr = gethostbyaddr(hipaddr, 4, AF_INET);
printf("official hostname:%s\n",hptr->h_name);
return 0;
}
运行结果显示:分段错误(core dumped)。 但我不知道如何使它发挥作用。所以我需要一些帮助......使用gethostbyaddr时的分割错误()
我改变了代码如下:
#include <netdb.h>
#include <stdio.h>
#include <sys/socket.h>
int main(int argc, char **argv)
{
char *ptr = NULL;
struct hostent *hptr = NULL;
struct in_addr hipaddr ;
ptr = argv[1];
inet_aton(ptr,&hipaddr);
hptr = gethostbyaddr(&hipaddr, sizeof(hipaddr), AF_INET);
printf("official hostname:%s\n",hptr->h_name);
return 0;
}
然后,它的作品,但为什么!?
谢谢你的帮忙。下面两个程序如何? – dsfa24
您不能只是不断地向现有问题添加越来越多的问题。我回答了你问的问题。如果你有更多,请提出一个新问题。我回滚了编辑,以便此问题以其原始形式显示。对于这两个程序之间的区别,值得一提的是一个使用URL的字符串文字,另一个使用'argv [1]'。所以大概'argv [1]'包含了除URL之外的其他东西。 –
对不起。这是我第一次用这个网站解决我的问题,所以我不明白规则的细节。毕竟,谢谢你的帮助。 – dsfa24