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