gpt4 book ai didi

c - `read()` C中的系统调用不读取字节

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:04 24 4
gpt4 key购买 nike

我正在尝试使用系统调用从文件中读取字符并计算文件中特定单词的频率,但我的一个 read() 调用的行为让我感到困惑。这是我写的代码:

int counter, seekError,readVal;
counter = 0;

char c[1];
char *string = "word";

readVal = read(fd,c,1);
while (readVal != 0){ // While not the end of the file
if(c[0] == string[0]) { // Match the first character
seekError = lseek(fd,-1,SEEK_CUR); // After we find a matching character, rewind to capture the entire word
char buffer[strlen(string)+1];
buffer[strlen(string)] = '\0';
readVal = read(fd,buffer,strlen(string)); // This read() does not put anything into the buffer

if(strcmp(lowerCase(buffer),string) == 0)
counter++;

lseek(fd,-(strlen(string)-1),SEEK_CUR); // go back to the next character
}
readVal = read(fd,c,1);
}

在我使用的所有读取调用中,我都能够毫无问题地从我的文件中读取字符。但是,无论我如何尝试读取字符,readVal = read(fd,buffer,strlen9string)); 行都不会将任何内容放入 buffer。幕后有什么事情可以解释这种行为吗?我也试过在不同的机器上运行这段代码,但在那一行的 buffer 中我仍然没有得到任何东西。

最佳答案

应该没有必要投 -1进入off_t类型。看起来你真正的错误是你没有包括 <unistd.h>所以lseek使用时未正确声明。或者你的系统执行 lseek 时存在严重错误.

关于c - `read()` C中的系统调用不读取字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386974/

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