我有两个char缓冲区,我试图比较它们的一部分。我有一个奇怪的问题。我有以下代码:
char buffer1[50], buffer2[60];
// Get buffer1 and buffer2 from the network by reading sockets
for(int i = 0; i < 20; i++)
{
if(buffer1[15+i] != buffer2[25+i])
{
printf("%c", buffer1[15+i]);
printf("%c", buffer2[25+i]);
printf("%02x", (unsigned char)buffer1[15+i]);
printf("%02x", (unsigned char)buffer2[25+i]);
break;
}
}
上面的代码是我实际代码的简化版本,我没有在这里复制粘贴,因为它太长了。为了防止这种情况有所帮助,我通过读取套接字在网络上获得了这两个缓冲区。
问题是即使两个缓冲区都相同,循环也会中断。为了检查缓冲区中的内容,我在if语句中添加了两个print语句。奇怪的是,printf语句都为%c和%02x打印相同的值,但比较失败并且循环中断。
答案 0 :(得分:3)
(免责声明:我不是C / ++专家)
在我看来,当你正在观察时,数据正在发生变化。想到两个快速问题:
答案 1 :(得分:2)
我唯一看到的是计时问题。如果它们在if语句中不相同,并且它们在print语句中是相同的,则有人在它们之间进行了更改。