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

Tôi không muốn làm điều này bằng cách khai báo bất kỳ biến tạm thời nào. Chương trình này cung cấp lỗi phân đoạn.Làm thế nào để chuyển đổi uint32_t thành struct in_addr?

struct in_addr { 
    uint32_t s_addr; 
}; 

Trả lời

9

Bạn đang truyền int cho con trỏ. Có lẽ bạn muốn điều này:

*(struct in_addr *)&ip 

Nhưng kết quả được xác định thực hiện (để bắt đầu, có những cân nhắc về tính cuối cùng).

+0

Tôi biết mình đã làm điều gì đó ngu ngốc – Bruce

+0

Tôi có thể làm htonl trong cùng một dòng như thế nào? – Bruce

+0

Kết quả là triển khai UNdefined. Nó đưa ra một cảnh báo: lỗi: con trỏ dereferencing 'ip' không phá vỡ quy tắc bí danh nghiêm ngặt – jrwren

Các vấn đề liên quan