2015-04-05 117 views
0

返回值我有這樣的代碼是工作的罰款:打印從INET_ATON()函數

#include <arpa/inet.h> 
#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char *argv[]) 
{ 
    struct in_addr addr; 

    if (argc != 2) { 
     fprintf(stderr, "%s <dotted-address>\n", argv[0]); 
     exit(EXIT_FAILURE); 
    } 

    if (inet_aton(argv[1], &addr) == 0) { 
     perror("inet_aton"); 
     exit(EXIT_FAILURE); 
    } 

    printf("%s\n", inet_ntoa(addr)); 
    exit(EXIT_SUCCESS); 
} 

我想實現的是打印inet_aton()函數的值。函數的描述說它返回一個數字,但是當我嘗試打印它時,它說「不能從地址結構轉換爲十進制」。

+1

'addr.s_addr'應該是一個無符號整數。見例如http://man7.org/linux/man-pages/man7/ip.7.html – brm 2015-04-05 15:22:49

+0

*你在哪裏得到錯誤?你可以編輯你的問題來包含更多的細節(比如它是編譯器錯誤還是運行時錯誤,*實際*和*完整*錯誤)。 – 2015-04-05 15:22:59

+0

這是一個編譯器錯誤。 – 2015-04-05 15:25:33

回答

0

使用這個,而不是你最後printf工作對我來說:

printf("%d\n", addr.s_addr); 
+0

如果你只是做'printf(「%d \ n」,addr);',你會得到一個編譯器警告(因爲這是糟糕的形式),但它仍然可以工作。 – brenns10 2015-04-05 15:28:58