進(jìn)度條的應(yīng)用在軟件中無處不在,拷貝一個(gè)文件需要一個(gè)進(jìn)度條,加載一個(gè)文件也需要一個(gè)進(jìn)度條,來標(biāo)志完成與否。
那么 ,一個(gè)進(jìn)度條有哪些元素呢:
一個(gè)不斷向右生長(zhǎng)的容器(直觀的看出當(dāng)前的進(jìn)度)
一個(gè)數(shù)據(jù)化反映進(jìn)度的百分比。
一個(gè)標(biāo)志(這個(gè)標(biāo)志反映這個(gè)進(jìn)度條是否在工作,還是卡死
首先我們需要將[ ]固定在左右兩邊,中間預(yù)留下空間,然后用“=”進(jìn)行填充。這里printf("[%-101s] ",str); 格式化輸出,‘-’表示左對(duì)齊,100表示固定列寬,然后‘ ’ 表示回車,即每次打印完使光標(biāo)回到最開始位置。
再明確一下,‘ ’和‘ ’這兩個(gè)概念:‘ ’表示換行,換到當(dāng)前行的下一行,即光標(biāo)指向下一行最開始的位置;' '指回車,即光標(biāo)回到最開始位置。
如果不加睡眠時(shí)間,結(jié)果一下就全打印出來了,但我們想讓它稍微慢一點(diǎn),畢竟是進(jìn)度條嘛,而Linux系統(tǒng)下默認(rèn)sleep時(shí)間單位為秒(s),這樣的話又覺得間隔時(shí)間太長(zhǎng)了,于是就有了usleep,它是以微妙計(jì)的。
C語言的printf是行緩沖輸出,什么意思呢?就是說不滿一行不輸出,就是靠 輸出的,沒有 只好強(qiáng)制把緩沖中的數(shù)據(jù)輸出出所以這就 要用到函數(shù)fflush()。
程序源代碼:
????
效果如下圖所示:
審核編輯:劉清
-
緩沖器
+關(guān)注
關(guān)注
6文章
2056瀏覽量
47079 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
605瀏覽量
28638 -
C語言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141857 -
printf函數(shù)
+關(guān)注
關(guān)注
0文章
31瀏覽量
6117
原文標(biāo)題:基于C語言的進(jìn)度條,附代碼
文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
C語言基礎(chǔ)知識(shí)(2)--標(biāo)準(zhǔn)輸入輸出

C語言printf函數(shù)族學(xué)習(xí)筆記

如何去使用printf這個(gè)C語言常用的打印輸出函數(shù)呢
printf函數(shù)輸出到串口該如何去實(shí)現(xiàn)呢
什么是串口通信?基于STM32的printf打印輸出

C語言printf格式化輸出的實(shí)例詳細(xì)資料說明
解析C語言入門基礎(chǔ)之輸入和輸出
探索C語言入門基礎(chǔ)之緩沖區(qū)

通過串口利用printf函數(shù)輸出數(shù)據(jù)

C語言printf()輸出格式
C語言printf輸出函數(shù)的用法
printf輸出重定向的方法

評(píng)論