我正在尝试读取一个包含 1024 行的文件,每行中有 9 个相同的字母,如果找到与此术语不匹配的行,则返回。
该文件如下,但有 1024 行:
eeeeeeeee
eeeeeeeee
eeeeeeeee
代码:
fd = open(fileName, O_RDONLY);
lseek(fd,0,SEEK_SET);
if(flock(fd, LOCK_SH) == -1)
perror("error on file lock");
if(fd != 0){
read(fd, lineFromFile, (sizeof(char)*10));
arguments->charRead = lineFromFile[0];
for(i=0; i < 1024; i++){
var = read(fd, toReadFromFile, (sizeof(char)*10));
if(strncmp(toReadFromFile,lineFromFile,10) != 0 || var < 10){
arguments->result = -1;
printf("%s \n\n",toReadFromFile);
printf("%s \n",lineFromFile);
printf("i %d var %d \n",i,var);
free(toReadFromFile);
free(lineFromFile);
return ;
}
}
}
输出:
> eeeee
eeee
eeeee
eeee
i 954 var 6
我有 5 个具有不同字母的不同文件,每个文件都在该特定行 (954) 中给出此输出,并且该行是正确的,字母写了 9 次,最后带有 \n。
任何想法为什么会发生这种情况?如果我不使用 lseek 它可以正常工作,但我需要 lseek 将文件分成几个部分以由不同的线程进行测试。我将 0 索引放在 lseek 中,以简化给大家看。
谢谢。