1、回車換行
回車換行(\n):每次游標移到下一行的行首位置處;
換行(\r):每次游標移到本行的行首位置處
在輸入\r,游標將移動到行首,輸入\n游標換行並且移動到下一行行首,相當於\n\r。
2、行緩衝區、fflush
緩衝區分為無緩衝、行緩衝、全緩衝。
無緩衝:表示的是沒有緩衝,可以將資訊立馬顯現出來,典型代表是標準錯誤流stderr。
行緩衝:表示的是輸入輸出遇到換行才執行真正的i/o操作。典型的代表是鍵盤的操作。
全緩衝:表示的是輸入輸出寫滿緩衝區才執行i/o操作。典型的代表是磁碟的讀寫。
printf是乙個行緩衝函式,先寫到緩衝區,滿足條件後,才將緩衝區刷到對應檔案中,刷緩衝區的條件如下:
1 緩衝區填滿
2 寫入的字元中有『\n』 『\r』
3 呼叫fflush手動重新整理緩衝區
4 呼叫scanf要從緩衝區中讀取資料時,也會將緩衝區內的資料重新整理
滿足上面4個條件之一緩衝區就會重新整理,,也就是printf會真正呼叫write來寫入
當我們執行printf的程序或者執行緒結束的時候會主動呼叫flush來重新整理緩衝區,所以程式結束,也會重新整理。
3、sleep,usleep
linux下(使用的gcc的庫),sleep()函式是以秒為單位的,sleep(1);就是休眠1秒。而mfc下的sleep()函式是以毫秒為單位的,sleep(1000);才是休眠1秒。而如果在linux下也用微妙為單位休眠,可以使用執行緒休眠函式:void usleep(unsigned long usec)。
程式**如下:
結果:
Linux 簡單實現進度條
1 進度條存在乙個區間,不斷載入資料,直到區間加載滿了。2 發現會顯示你的進度,從0 100 3 在網速不好的時候,會出現乙個旋轉的小圈,表示在進行載入資料。思路 我們通過乙個陣列,每載入成功一次,陣列會多出現乙個標示。由於進度條是在一行內進行的,故我們需要回車,不需要換行,通過 r 實現。1 進度...
進度條的簡單實現
首先重申一下幾個概念 1 回車與換行 回車與換行是不同的概念,但很多人都不太清楚二者之間有何區別。回車是回到當前行的行首,而不會換到下一行,如果接著輸入的話,之前的內容會被沖掉,從頭開始寫入,表示為 r。換行顧名思義是換到換到下一行,但不會回到行首。一般enter鍵代表了回車和換行。2 進度條的原理...
簡單進度條的實現
首先讓我們先來看進度條實現的 include include include int main printf n return 0 其中用了乙個函式usleep,在gcc編譯器中,它包含在標頭檔案unistd.h中,其單位為微秒,sleep單位為毫秒,sleep單位為秒。r 表示回車,表示輸出一行後...