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;
}
Результат работы показал, что: segmentation fault (core dumped). Но я не знаю, как заставить его работать .so мне нужна помощь ...Ошибка сегментации при использовании 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
Вы не можете просто добавлять все новые и новые вопросы к существующему вопросу. Я ответил на вопрос, который вы задали. Если у вас больше, задайте новый вопрос. Я откатил редактирование, чтобы этот вопрос был в его первоначальной форме. Для чего стоит разница между двумя программами, так это то, что для текстового литерала используется строковый литерал, а другой - 'argv [1]'. Поэтому, предположительно, 'argv [1]' содержит нечто иное, чем URL. –
Извините за это. Это мой первый раз, когда я использую этот сайт для решения моего вопроса, чтобы я не разбирался в деталях. В конце концов, спасибо за помощь. – dsfa24