当我用两个字符串使用printf/printf_s时,对于%s变量我都得到相同的输出。printf和多个字符串的不良行为
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
现在,我已经检查了的oldip和newip值是由打印语句之前打破不同,我也试图让下面的功能和使用它在打印语句(而不是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
为什么我看到这种行为,我该如何解决?
谢谢:)