一个write和printf混用的例子
生活随笔
收集整理的這篇文章主要介紹了
一个write和printf混用的例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們知道,C語言中,write和printf都可以完成向屏幕輸出的任務。
但是write是不帶緩沖的輸出,printf是帶緩沖的輸出。當它們二者混用時,就會出現一些意料之外的問題。
請看下面的代碼
按照程序的執行流程,輸出的結果應該是"12345[換行]6"。
但是實際上屏幕的輸出結果是"24135[換行]6"
原因是這樣的,write函數不帶緩沖區,因此每當程序執行到write函數時,就會立即向屏幕輸出。而printf是帶緩沖區的,只有當緩沖塊滿或是遇到換行符,才會將緩沖區的內容一并向屏幕輸出。
為了避免這種情況,不應將兩種輸出函數混用,或者是對于printf出的不以換行符結尾的字符串,用一個fflush函數強制清空緩沖區,輸出到屏幕上,就得到下面的代碼。
總結
以上是生活随笔為你收集整理的一个write和printf混用的例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序人生 Hello‘s P2P
- 下一篇: 通俗理解checked Exceptio