我有两个字符缓冲区,我试图比较它们的部分。我有一个奇怪的问题。我有以下代码:字符缓冲区比较
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语句中添加了两条打印语句。奇怪的是,printf语句为%c和%02x打印了相同的值,但比较失败并且循环中断。
出于普遍的兴趣 - 你添加的演员是否实际上改变了任何东西? – configurator 2011-03-18 01:48:27
我在这里找不到任何东西;可能会添加一些代码以将'buffer1'和'buffer2'转储到磁盘,将它们存储到'/ tmp/1'和'/ tmp/2'中,并分解出'od -x'或'xxd'来试图找到问题? – sarnold 2011-03-18 01:49:16
你怎么知道中断退出循环?我退出时的价值是什么?为什么不使用memcmp? – Sean 2011-03-18 01:50:19