C-当程序读取文件时,不会注意到对文本文件所做的更改



我正在制作一个本地聊天程序,该程序写入文件,然后读取文件,查看其他人是否正在编辑该文件。我已经把附件附在文件上了。但是,当读取文件时,它只会看到文件第一次打开时的样子。我正在使用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"定位到上次的位置。或者可以使用不同的机制,例如管道或插座。

相关内容

  • 没有找到相关文章

最新更新