在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檔案中。
MDK環境下stm32實現printf函式
printf雖然是c語言的標準函式,但是是針對有stdin,stdout裝置的系統的,在嵌入式平台上是沒有標準的stdin,stdout的,需要對映到串列埠後某個輸出物件的,而嵌入式平台各不相同,如果又沒有作業系統的支援,就只能靠自己實現了,因此stm32下的printf不在標準庫里,而在定製的庫里...
關於printf 詳解
格式化輸出,即 print format 標頭檔案 也可不用標頭檔案 語法格式 printf 格式控制字串 輸出表列 格式字串格式 標誌 輸出最少寬度 精度 長度 型別 d 以十進位制形式輸出帶符號得整數,正數不輸出符號 i 輸出有符號十進位制整數,效果同 d u 輸出無符號十進位制整數 o o 輸...
總結linux下printf命令的用法
printf format and print date 通過printf的選項格式化輸出資料 參考 基本英文學習 二進位制 binanry number 八進位制 otcal number 十進位制 decimal number 十六進製制 hexadecimal number 1 基本的列印輸出...