printf函數與緩衝區linux
printf函數是一個行緩衝函數,先將內容寫到緩衝區,知足必定條件後,纔會將內容寫入對應的文件或流中。數組
基本條件以下:函數
1.緩衝區填滿 2.寫入的字符中有‘\n’ '\r' 3.調用fflush或stdout手動刷新緩衝區 4.調用scanf等要從緩衝區中讀取數據時,也會將緩衝區內的數據刷新
5.程序結束時
有如下示例1驗證:spa
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 /*argc:命令行輸入參數個數,argv:命令行參數 5 *argv爲字符指針數組,argv[i]爲指向第i個命令行參數內容的指針 6 */ 7 int main(int argc, char **argv){ 8 int i; 9 char a='a'; 10 if(argc != 2) //命令行參數爲2,不然出錯 11 { 12 printf("Usage:%s Number\n",argv[0]); 13 return 0; 14 } 15 16 for(i=0;i<atoi(argv[1]);i++) //atoi:字符轉化爲整數 17 { 18 printf("%c",a); 19 } 20 21 while(1); //讓程序一直運行 22 }
運行結果:命令行
說明linux下,printf緩衝區大小爲1024字節。while(1)使程序一直運行,當緩衝區未滿時,不會輸出打印。3d
示例2:指針
1 #include <stdio.h> 2 3 int main() 4 { 5 int i; 6 for(i=0; i<10; i++) 7 { 8 printf("a"); 9 fflush(stdout); //參數爲文件指針 10 } 11 while(1); 12 return 0; 13 }
沒進行流刷新以前code
流刷新fflush以後blog