linux下printf函數輸出不及時解決辦法

在linux系統下,printf函數是行緩衝式的輸出,printf遇到\n時,或者緩衝區滿時,纔會將緩衝區裏的內容刷新到標準輸出(stdout).

因此, printf("p"); 等語句的顯示不能立刻顯示在屏幕上,但是printf("p\n"); 可以.

爲了解決這個問題可以通過:fflush(stdout)解決,即變成:
printf("p");
fflush(stdout);
相對printf,使用fprintf的好處

printf函數的接口如下所示:
int printf( const char *format [,argument]...
);
fprintf函數的接口如下所示:
int fprintf( FILE *stream, const char *format [,argument ]...);
從接口可以看出,使用printf函數會更方便些,少了一個函數參數。在通常情況下,的確是這樣的。但在輸出信息比較多,而且輸出的信息有可能需要分類的化,使用fprintf的好處就體現出來了。
printf函數使用的輸出設備是標準輸出設備,即stdout。在使用fprintf函數時,我們可以在第一個參數使用stdout或stderr進行輸出信息分類。雖然stdout和stderr在正常情況下都指向標準輸出設備,但通常程序運行時的命令行參數,可以分別控制stdout和stderr指向不同的設備或文件。這樣,就可以達到對輸出信息進行分類控制了。如下面的代碼段所示:

test.c
//一般輸出信息
extern char *info;
extern char *errinfo;
fprintf(stdout, "%s", info);
//特別關注的輸出信息
fprintf(stderr, "%s", errinfo);

這樣,在運行程序時,可以使用如下的命令行:
test 1&>1.txt 2&>2.txt
這樣,一般輸出信息可以存儲到1.txt文件中,特別關注的輸出信息可以存儲到2.txt文件中。




所以,請路過的,看到的朋友們,需要的話到俺的小店裏充話費吧,移動聯通電信的都可以充值,目前全是虧本充值,只賺信譽不賺錢

俺在這裏謝謝各位了

我的淘寶店鋪:

  天使話費充值二手書籍吧

http://shop36800091.taobao.com/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章