2つの文字列でprintf/printf_sを使用すると、両方の%s変数で同じ出力が得られます。
IN_ADDR oldIP;
oldIP.S_un.S_addr = iptable[j]->ipAddress;
IN_ADDR newIP;
newIP.S_un.S_addr = adapterTbl->table[i].dwAddr;
printf_s("index %d old: %s new: %s",
adapterTbl->table[i].dwIndex, inet_ntoa(oldIP),
inet_ntoa(newIP));
出力は次のとおりです。
index 11 old: 192.168.1.1 new: 192.168.1.1
ここで、printステートメントの前にブレークしてoldipとnewipの値が異なることを確認しました。また、次の関数を作成して、(inet_ntoaの代わりに)printステートメントで使用しようとしました。
char *convertIP (DWORD ip)
{
IN_ADDR *addr = new IN_ADDR;
memset(addr, 0, sizeof(IN_ADDR));
addr->S_un.S_addr = (u_long) ip;
return inet_ntoa(*addr);
}
これによる出力は次のとおりです。
192.168.1.1
192.168.1.2
index 11 old: 192.168.1.1 new: 192.168.1.1
なぜこの動作が見られるのですか?どうすれば修正できますか?
ありがとう :)