2015-04-05 111 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