我有兩個字符緩衝區,我試圖比較它們的部分。我有一個奇怪的問題。我有以下代碼:字符緩衝區比較
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