我正在制作一个本地聊天程序,该程序写入文件,然后读取文件,查看其他人是否正在编辑该文件。我已经把附件附在文件上了。但是,当读取文件时,它只会看到文件第一次打开时的样子。我正在使用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("%sn", globalline);
}
}
如何刷新文件,以便每次调用函数时都能读取文件的最新版本?
编辑:我想明白了。while循环只在c不是换行符时运行,但在c是换行符时也会停止。我没有重置c,所以它保持为换行符,因此while循环不会执行。
fgets等缓冲区输入。所以他们可能会找到文件的末尾,无法读取。例如,你可以重新打开文件,然后"fseek"定位到上次的位置。或者可以使用不同的机制,例如管道或插座。