#include <sys/socket.h>
#include <err.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <netinet/in.h>
int main(int argc, char **argv) {
struct sockaddr_in X = {0};
X.sin_family = AF_INET;
X.sin_addr.s_addr = inet_addr("127.0.0.1");
X.sin_port = htons(8080);
struct sockaddr_in Y = {0};
Y.sin_family = AF_INET;
Y.sin_addr.s_addr = inet_addr("212.43.159.20");
Y.sin_port = htons(80);
printf("X:Y %s:%s\n", inet_ntoa(X.sin_addr), inet_ntoa(Y.sin_addr));
printf("X %s\n", inet_ntoa(X.sin_addr));
printf("Y %s\n", inet_ntoa(Y.sin_addr));
return 0;
}
爲什麼第一個pritnf打印兩次相同的IP而不是給定的? 第二和第三似乎沒問題。 似乎發生在linux gcc/clang和freebsd clang上,這是已知的事情嗎?奇怪的printf行爲與inet_ntoa
我傾向於通過使用'inet_ntop'來避免這個問題。 – jch