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