私はコードを書いたが、なぜ最後のprintfが予期せぬ結果をもたらすのか分からない。私のコマンドライン引数は、次のようにコードは12と15だった:なぜinet_ntoaがprintfで2回呼び出されたのが間違った出力ですか?
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
struct in_addr adr, adr2;
int num, num2;
num = atoi(argv[1]);
num2 = atoi(argv[2]);
adr.s_addr = htonl(num);
adr2.s_addr = htonl(num2);
printf("%x %x\n", num, adr.s_addr); # c c000000
printf("%x %x\n", num2, adr2.s_addr); # f f000000
printf("%s\n", inet_ntoa(adr)); # 0.0.0.12
printf("%s\n", inet_ntoa(adr2)); # 0.0.0.15
printf("%s %s\n", inet_ntoa(adr), inet_ntoa(adr2)); # 0.0.0.12 0.0.0.12
return(0);
}
私は最終的な出力は「0.0.0.12 0.0.0.15」であることを期待しかし、それはそうではありません。誰も助けてくれませんか?
ありがとうございました。それは助けになった。 – anupamb