プログラムがファイルに書き込むローカルチャットプログラムを作成していて、他の人がファイルを編集しているかどうかを確認します。私はファイルをちょうど良い下に追加しています。しかし、ファイルが読み込まれると、ファイルが最初に開かれたときの様子だけが表示されます。 私はbuffer = fopen("buffer.txt", "r+");
を使用してファイルを開きます。C - テキストファイルに加えられた変更は、プログラムがファイルを読むときに気付かれません。
マイ読み取りアルゴリズムは次のようになります。
それは関数が呼び出される毎回ファイルの最新バージョンを読み取るように私は、ファイルを更新するにはどうすればよい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ループは実行されません。
現時点では未知数が多すぎるため、[mcve]が必要です。 – KevinDTimm
ファイルを開く方法を表示する必要があります。 – stark
あなたの質問が正しく理解されていれば、読者のために「開かれている」ファイルを変更している人がいます。実行中のプログラムに最新のファイル内容を表示させるには、ファイルを閉じてから再度開きます。 – user3629249