gpt4 book ai didi

comparison - 字符缓冲区比较

转载 作者:行者123 更新时间:2023-12-04 01:21:28 28 4
gpt4 key购买 nike

我有两个字符缓冲区,我正在尝试比较它们的一部分。我有一个奇怪的问题。我有以下代码:

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 打印相同的值,但是比较失败并且循环中断。

最佳答案

(免责声明:我不是 C/++ 专家)

在我看来,当您查看数据时,数据似乎正在发生变化。两个简单的问题浮现在脑海中:

  1. 如果您在调试器中运行它,并逐步检查循环,它还会发生吗?如果不是,那么我强烈怀疑我的第二个问题会引导您找到答案。
  2. 读操作是异步的吗?当您在 for 循环中时,似乎仍在读取数据,这意味着您没有等待读取完成。

关于comparison - 字符缓冲区比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5347162/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com