linux :vim 实现命令行下输出进度条
1、? 進(jìn)度條原理:
進(jìn)度條的的動(dòng)態(tài)增長(zhǎng)是利用人的視覺短暫停留效果的,不斷從輸出緩沖區(qū)刷新出相同的內(nèi)容,在肉眼看來(lái)進(jìn)度條在不斷的增長(zhǎng)。
在顯示器上先輸出[#??????????????????????????????????????????][%1]
刷新一次之后,???? [##????????????????????????????????????????? ][%2],由于刷新很快,看起來(lái)進(jìn)度 ‘#’不斷增長(zhǎng),直到進(jìn)度完成%100
2、? 緩沖區(qū):
緩沖區(qū)(buffer)這個(gè)中文譯意源自當(dāng)計(jì)算機(jī)的高速部件與低速部件通訊時(shí),必須將高速部件的輸出暫存到某處,以保證高速部件與低速部件相吻合. 后來(lái)這個(gè)意思被擴(kuò)展了,成為"臨時(shí)存貯區(qū)"的意思。
緩沖區(qū)分為:無(wú)緩沖、行緩沖、全緩沖。
無(wú)緩沖:表示的是沒有緩沖,可以將信息立馬顯現(xiàn)出來(lái),典型代表是標(biāo)準(zhǔn)錯(cuò)誤流stderr。
行緩沖:表示的是輸入輸出遇到換行才執(zhí)行真正的I/O操作。典型的代表是鍵盤的操作。
全緩沖:表示的是輸入輸出寫滿緩沖區(qū)才執(zhí)行I/O操作。典型的代表是磁盤的讀寫。
3、 回車換行:
回車用'\r'表示,表示的是回到這行的起始位置。換行用‘\n'表示,表示的是換行到下一行。
在C語(yǔ)言中,刷新緩沖區(qū)的函數(shù)是fflush函數(shù),強(qiáng)制刷新緩沖區(qū)。實(shí)現(xiàn)這個(gè)進(jìn)度條應(yīng)使用的是無(wú)緩沖,實(shí)時(shí)的將進(jìn)度條的變化顯現(xiàn)出來(lái)。在這里,不需要換行只需要回車。
4、 fflush:
fflush,函數(shù)名,?清除讀寫緩沖區(qū),需要立即把輸出緩沖區(qū)的數(shù)據(jù)進(jìn)行物理寫入時(shí)。
fflush(stdin)刷新標(biāo)準(zhǔn)輸入緩沖區(qū),把輸入緩沖區(qū)里的東西丟棄[非標(biāo)準(zhǔn)]
fflush(stdout)刷新標(biāo)準(zhǔn)輸出緩沖區(qū),把輸出緩沖區(qū)里的東西打印到標(biāo)準(zhǔn)輸出設(shè)備上
?
5、進(jìn)度條代碼如下:
Progress_bar.c
?
?
Makefile :
?
?
總結(jié)
以上是生活随笔為你收集整理的linux :vim 实现命令行下输出进度条的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言实现的简易FTP客户端
- 下一篇: python内嵌浏览器_内嵌web浏览器