關於c語言函數,看,我想要的結果是eeee在屏幕上停留3秒後消失,為什麽壹運行就什麽都沒有
原因:printf()函數是行緩沖輸出。
printf()不直接把參數發送到屏幕上,而是把參數輸出到輸出緩沖區裏面。輸出緩沖區是壹塊內存區域,壹般大小是4096字節,這表示它可以存放4096個字符。
出現以下幾種情況之壹,輸出緩沖區的內容會被發送到標準輸出(比如顯示器),這叫做刷新緩沖區:
1.行緩沖輸出遇到換行符時;
2.需要輸入時;
3.緩沖區滿時;
4.程序結束時;
5.調用強制刷新輸出緩沖區的函數fflush(stdout)時。
雖然不知道清屏函數clrscr()的具體實現,不過它也會導致輸出緩沖區被刷新,並且隨後清除屏幕上的內容。
如果對上面的內容不理解可以把printf("eeee");分別替換成以下幾種形式運行:
1.末尾添加換行符:
printf("eeee\n");
2.調用fflush(stdout),與上面的區別是不會換行:
printf("eeee");
fflush(stdout);
3.在中間插入換行符:
printf("ee\nee");
4.中間插入換行符,並且調用fflush():
printf("e\neee");
fflush(stdout);