printf函數與緩衝區

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

相關文章
相關標籤/搜索