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

时间:2016-07-20 16:19:22

标签: c file buffer

我正在创建一个本地聊天程序,程序写入该文件,然后读取该文件以查看其他人是否正在编辑该文件。我已经将文件追加到了正常状态。但是,当读取文件时,它只会看到文件首次打开时的状态。 我正在使用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循环不会执行。

1 个答案:

答案 0 :(得分:0)

fgets等缓冲输入。所以他们可能会找到文件结尾,而不能读过它。例如,您可以重新打开该文件,并且' fseek'定位你最后一次。或者也许使用不同的机制,如管道或插座。