当我将 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 的值是否不同,并且我还尝试制作以下函数并在 print 语句中使用它(而不是 inet_ntoa):
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
为什么我会看到这种行为,我该如何解决?
谢谢 :)