1
私はC言語でsetvbuf()
機能を使用して、バッファ上のファイルの内容を保存しようとしているが、これは、そうするためのコードです:setvbuf()関数がCのバッファに増加を追加するのはなぜですか?
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp=fopen("test.txt","r+");
char buff[BUFSIZ];
char buff2[BUFSIZ];
setvbuf(fp,buff2,_IOFBF,BUFSIZ);
fgets(buff,BUFSIZ,fp);
printf("%s\n",buff2);
system("PAUSE");
return 0;
}
を、これはファイルの内容である
line 1
line 2
line 3
しかし、コードを実行すると、コンソールには次のように表示されます。
line 1
line 2
line 3 3
出力の最後に追加の文字が含まれていますか?
'setvbuf'を置き換える提案? – Mehdi
何をしようとしていますか? *意図的に* stdioバッファの内容を確認する方法はありません。これは、さまざまな実装の選択を可能にする抽象化/カプセル化の一部です。 –