我正在创建一个本地聊天程序,程序写入该文件,然后读取该文件以查看其他人是否正在编辑该文件。我已经将文件追加到了正常状态。但是,当读取文件时,它只会看到文件首次打开时的状态。
我正在使用buffer = fopen("buffer.txt", "r+");
打开文件。
我的阅读算法如下所示:
void bufread(){
//READING BUFFER
fseek(buffer, -1-strlen(nick), SEEK_END);
fgets(readbuf, 0x5FF, buffer);
removeChar(readbuf, '\n');
if (strcmp(readbuf, nick) == 0 )
;
else{
i = 0;
strcpy(prevbuf, globalline);
while(c != '\n'){
fseek(buffer, -2, SEEK_CUR);
c = getc(buffer);
i++;
}
fgets(globalline, i, buffer);
printf("%s\n", globalline);
}
}
如何在每次调用函数时刷新文件以便读取文件的最新版本?
编辑:我明白了。 while循环仅在c不是换行符时运行,但是当c是换行符时它也会停止。我没有重置c,因此它保持换行符,因此while循环不会执行。答案 0 :(得分:0)
fgets等缓冲输入。所以他们可能会找到文件结尾,而不能读过它。例如,您可以重新打开该文件,并且' fseek'定位你最后一次。或者也许使用不同的机制,如管道或插座。