当我使用带有两个字符串的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));
Run Code Online (Sandbox Code Playgroud)
输出是:
index 11 old: 192.168.1.1 new: 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
现在,我已经通过在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);
}
Run Code Online (Sandbox Code Playgroud)
这个输出是:
192.168.1.1
192.168.1.2
index 11 old: 192.168.1.1 new: 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
为什么我会看到这种行为,我该如何解决?
谢谢 :)
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |