chy*_*yeh 2 c linux network-programming
struct in_addr a,b,c,d;
if(inet_aton ("10.0.0.1", &a)!=-1 );
printf("a:%s\n", inet_ntoa(a));
if(inet_aton ("10.0.0.2", &b)!=-1 )
printf("b:%s\n", inet_ntoa(b));
Run Code Online (Sandbox Code Playgroud)
打印到IP地址没问题:
a:10.0.0.1
b:10.0.0.2
Run Code Online (Sandbox Code Playgroud)
但是我发现:
inet_aton ("10.0.0.3", &c);
inet_aton ("10.0.0.4", &d);
printf("c:%s %s\n", inet_ntoa(c), inet_ntoa(d));
printf("d:%s\n", inet_ntoa(d));
Run Code Online (Sandbox Code Playgroud)
它打印:
c:10.0.0.3 d:10.0.0.3
d:10.0.0.4
Run Code Online (Sandbox Code Playgroud)
奇怪的是它d在这行打印错误的IP :
printf("c:%s %s\n", inet_ntoa(c), inet_ntoa(d));
Run Code Online (Sandbox Code Playgroud)
我不知道为什么!
手册inet_ntoa说:
该字符串在静态分配的缓冲区中返回,后续调用将覆盖该缓冲区.
你有两个函数printf("c:%s %s\n", inet_ntoa(c), inet_ntoa(d));覆盖相同的缓冲区.
试试if (inet_ntoa(c) == inet_ntoa(d)),你可能会对结果感到惊讶.
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |