printf函數與緩沖區


printf函數與緩沖區

printf函數是一個行緩沖函數,先將內容寫到緩沖區,滿足一定條件后,才會將內容寫入對應的文件或流中。

基本條件如下:

1.緩沖區填滿
2.寫入的字符中有‘\n’ '\r'
3.調用fflush或stdout手動刷新緩沖區
4.調用scanf等要從緩沖區中讀取數據時,也會將緩沖區內的數據刷新
5.程序結束時

有以下示例1驗證:

 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)使程序一直運行,當緩沖區未滿時,不會輸出打印。

示例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 }

沒進行流刷新之前

流刷新fflush之后


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM