2012-04-01 11 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; 
} 

Herhangi bir geçici değişkeni bildirerek bunu yapmak istemiyorum. Bu program segmentasyon hatası verir.Uint32_t struct in_addr nasıl dönüştürülür?

struct in_addr { 
    uint32_t s_addr; 
}; 

cevap

9

İşaretçiye int türdesiniz.

*(struct in_addr *)&ip 

Ama sonuç uygulama tanımlı (başlangıç ​​için, endian hususları oradayız) 'dir: Belki bunu istiyor.

+0

Bir şeyleri yaptığımı biliyordum aptal – Bruce

+0

Aynı satırda nasıl htonl yapabilirim? – Bruce

+0

Sonuç, tanımlanmamıştır. Bir uyarı verir: hata: 'ip' dereferencing işaretçi sıkı takma kuralları ihlal eder – jrwren