2012-04-01 3 views
6
#include <stdio.h> 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 

int main() 
{ 
uint32_t ip = 0; 
printf("%s\n",inet_ntoa(*(struct in_addr *)ip)); 
return 0; 
} 

Я не хочу этого делать, объявляя временную переменную. Эта программа дает ошибку сегментации.Как преобразовать uint32_t в struct in_addr?

struct in_addr { 
    uint32_t s_addr; 
}; 

ответ

9

Вы вводите int указателю. Может быть, вы хотите:

*(struct in_addr *)&ip 

Но результат от реализации (для начала, там уже порядком байтов соображений).

+0

Я знал, что делаю что-то глупое – Bruce

+0

Как я могу сделать htonl в той же строке? – Bruce

+0

Результатом является реализация UNdefined. Это дает предупреждение: ошибка: указатель на разыменование «ip» нарушает правила строгого сглаживания – jrwren

Смежные вопросы