本文轉載自:http://blog.chinaunix.net/uid-30058258-id-5029847.html
printf是一個行緩沖函數
printf函數是標准函數,最終會調用到系統調用函數,printf函數會掉用到write系統函數;但是調用write函數需要滿足一些條件件。
(1)緩沖區滿
(2)遇到\n \r
(3)調用fflush函數來沖洗緩沖區
(4)scanf讀取緩沖區的內容
(5)調用printf函數的進程或線程結束會調用fflush函數
檢測緩沖區的大小為1024B。
fflush函數的作用:把文件流中未寫出的數據全部寫出去。
函數名: fflush
功 能:
清除讀寫緩沖區,需要立即把輸出緩沖區的數據進行物理寫入時
頭文件:stdio.h
原型:int fflush(FILE *stream)
其中stream是要沖洗的流
fflush(stdin)刷新標准輸入緩沖區,把輸入緩沖區里的東西丟棄[非標准]
fflush(stdout)刷新標准輸出緩沖區,把輸出緩沖區里的東西打印到標准輸出設備上
printf("。。。。。。。。。。。");后面加fflush(stdout);可提高打印效率
例子
例子
for(i=1;i<=10;i++)
{
printf("%d ",i);
sleep(1);
}
這個不是每秒輸出一個數字而是十秒后一次性輸出十個數字!
在printf后加上fflush后緩沖區中的內容全部輸出。
{
printf("%d ",i);
sleep(1);
}
這個不是每秒輸出一個數字而是十秒后一次性輸出十個數字!