gpt4 book ai didi

c - read() 看到空字符而不是正确的字节

转载 作者:行者123 更新时间:2023-11-30 20:20:23 28 4
gpt4 key购买 nike

我正在读取二进制文件并将数据添加到 RB 树中。在我的文件中,前四个字节是一个 IP 地址,接下来的四个字节是一个数字,接下来的 x 个字节是一个以空字符结尾的字符串。

我意识到我应该读取缓冲的字节数,然后对其进行处理,但这是针对我们正在增量设计的项目(因此下一步是该步骤)。所以目前我正在做的是一次读取一个字节并对其进行处理,直到读取一个空字符。

这是我的代码的相关部分:

int fd, i, check, numNames;
unsigned char fourBytes[4];
char curChar;
char buffer[255];

fd = open("converted", O_RDONLY);

check = read(fd, fourBytes, 4);
if(check < 4) break;
strcpy(m->ip, fourBytes);

check = read(fd, fourBytes, 4);
if(check < 4) break;
numNames = *(int *)fourBytes;

// I have a loop here but in the scheme of my current issue it doesn't matter
check = read(fd, curChar, 1);

最后一行是我的问题所在,curChar 不包含下一个字节,它包含一个空字符(即使我知道下一个字节不为空)。为什么是这样?我尝试过使用 memset() 以及其他愚蠢的事情来弄乱我的数据类型、缓冲区大小。我对系统调用不是很熟悉,所以我不太确定从这里该去哪里。

非常感谢任何帮助。

最佳答案

正如您在此处给出的那样,curChar 是一个char,但您将其传递给read(2),就好像它是一个char*。由于您没有提到获取 SIGSEGV,我确信这不是您的实际代码...

关于c - read() 看到空字符而不是正确的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46383978/

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