2017-07-12 8 views
2

は、私は、ファイルcのfprintf()は出力を1つずつ、またはバルクでファイルに出力しますか?

FILE * file; 
file = fopen("output.txt", "a"); 
for (int i=0; i<10; i++){ 

    loop(arr, a_d, Y_d, sample_d, A_d, y_d, res_d, res,x_d, R_d, A1_d, y1_d, Q_d, TAU_d, devInfo, m, n, i); 

    float s = minimum(arr, 7802); 

    fprintf(file,"%f\n", s); 
} 

fclose(file); 

で私の出力を印刷するには、このコードを使用しています。しかし、私はプログラムの進捗状況を印刷するためのシェルスクリプトで-wcコマンドによってoutput.txtと、ファイルに充填行数を取得する必要がありますパーセンテージで表します。 fprinf()が出力を1つずつファイルまたは最後に出力するかどうかわかりません。だから、誰かがこれを行うための代替方法に私を示唆することができますか?

答えて

4

あなたが間違ったことを尋ねたが、私が説明させている:

(f)printf()出力をstdioストリームに、そしてそれらのストリームがバッファリングされていないか、2つの異なるモードでバッファリングのいずれかになります:完全バッファラインをバッファリングします。

FILE *ストリームをfopen()でオープンすると、通常、フルバッファモードになります。これは、バッファがいっぱいになったとき、またはストリームがフラッシュされたときにのみ出力されることを意味します(fflush()または暗黙的に閉じたとき)。

setvbuf()でバッファリングモードを変更することも、出力ごとにfflush()を呼び出すこともできます。


あなたが達成したいことは、あなたのプログラムから進捗情報を直接発する方がよいと思います。たとえば、これにはstderrを使用できます。

+0

私のプログラムから進行状況の情報を直接入手するにはどうすればいいですか? – agangwal

+0

実際には、これは必要なものによって異なります。たとえば、各ステップの後にパーセント値を計算し、 'fprintf()'を 'stderr'にすることができます。 –

+0

進捗状況をパーセンテージで表示したいだけです。あなたは私にそれを行う方法の例を表示できますか? – agangwal

関連する問題