真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

編寫(xiě)進(jìn)度條小程序以及所需知識(shí)點(diǎn)-創(chuàng)新互聯(lián)

目錄

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的辛集網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

sleep(n)函數(shù)

輸出緩沖區(qū)

fflush(stdout)

回車(chē)和換行表示的含義是完全不同的

\r 回車(chē)

\r 的注意事項(xiàng)

\n 換行

進(jìn)度條打印代碼


sleep(n)函數(shù)

在頭文件中。用于讓程序暫停n秒。

如上圖中,兩個(gè)main函數(shù)的區(qū)別只有printf()函數(shù)中有無(wú)\n換行符。但運(yùn)行結(jié)果卻截然不同。帶\n的程序?qū)⒘⒖檀蛴ello Linux,然后休眠3秒后結(jié)束程序,而不帶\n的程序?qū)⑿菝?秒,然后程序結(jié)束后才能打印hello Linux。為什么會(huì)這樣呢?

答案是:因?yàn)橛休敵鼍彌_區(qū)的存在,而輸出緩沖區(qū)又有特定的刷新策略將數(shù)據(jù)刷新到顯示器上。

輸出緩沖區(qū)

由于我們知道,程序一定是從上到下執(zhí)行的,所以不帶\n的情況,printf函數(shù)也一定是先執(zhí)行的,只是沒(méi)有立刻將打印結(jié)果顯示到屏幕上,而是休眠了3秒,等程序結(jié)束后才顯示。這里就要引出一個(gè)知識(shí)點(diǎn)叫輸出緩沖區(qū)。C語(yǔ)言是會(huì)為我們提供輸出緩沖區(qū)的,什么意思呢?上圖代碼是用C語(yǔ)言編寫(xiě)的,因?yàn)檎Z(yǔ)言本質(zhì)上就是用來(lái)操作計(jì)算機(jī)硬件的,所以這里C語(yǔ)言可以用來(lái)操作內(nèi)存,輸出緩沖區(qū)就是這塊內(nèi)存的名字,這塊輸出緩沖區(qū)會(huì)根據(jù)特定的刷新策略,進(jìn)行刷新。比如說(shuō):內(nèi)存對(duì)于顯示器設(shè)備采用的策略一般是行刷新,只有遇到\n換行符才會(huì)把\n之前的數(shù)據(jù)全部刷新到顯示器設(shè)備上,注意遇到空格是不會(huì)的。(這里的輸出緩沖區(qū)也可以認(rèn)為他是行緩沖區(qū))

fflush(stdout)

本質(zhì)上和\n的區(qū)別就只是不用換行,都是將輸出緩沖區(qū)的內(nèi)容刷新到標(biāo)準(zhǔn)輸出上,即顯示器。

如果printf函數(shù)不帶\n換行符,還想立刻刷新到顯示器上,在printf函數(shù)后添加 fflush(stdout)即可。如下圖:

回車(chē)和換行表示的含義是完全不同的

\r 回車(chē)

1. \r 回車(chē)并不會(huì)換行,回車(chē)表示回到當(dāng)前行的行首,如上圖?;剀?chē)用\r表示。注意在printf這樣的輸出函數(shù)中用\r回車(chē)符,并且是連續(xù)輸出,后來(lái)輸出的內(nèi)容會(huì)將之前的內(nèi)容原地覆蓋掉,這也解釋了一些動(dòng)態(tài)效果是如何實(shí)現(xiàn)的,如倒計(jì)時(shí),或者旋轉(zhuǎn),這里用旋轉(zhuǎn)舉例。假設(shè)最初是 | ,后來(lái)輸出 \ 并將 | 覆蓋,后來(lái)又輸出 / 將 \ 覆蓋掉。

\r 的注意事項(xiàng)

\r 已經(jīng)中招兩次了,比如上兩張圖倒計(jì)時(shí)的視覺(jué)效果,比如從5倒計(jì)時(shí)到1,最后屏幕上應(yīng)該留有“正在倒計(jì)時(shí)1”這樣的文本,但程序運(yùn)行結(jié)束后卻發(fā)現(xiàn)沒(méi)有,文本好像消失了,是真的消失了嗎?其實(shí)沒(méi)有消失,只是因?yàn)?\r不會(huì)換行,導(dǎo)致讓用戶輸入指令的提示符部分即上兩張圖紅框部分擋住了?“正在倒計(jì)時(shí)1”這個(gè)文本。兩次中招,花費(fèi)大量時(shí)間去腦部 /r的作用,真是快氣死了。

\n 換行

2. \n 換行并不會(huì)回到行首,而只表示換行而已,如上圖。換行用\n表示。那肯定有人會(huì)疑惑了,我們平時(shí)寫(xiě)代碼用pritnf函數(shù)時(shí),加了\n后打印出來(lái)的結(jié)果為什么會(huì)回到行首再換行呢?這是因?yàn)椴煌僮飨到y(tǒng)的編碼規(guī)則不一樣,Windows系統(tǒng)下的大多數(shù)編譯器會(huì)把?\n 編譯成?\n\r 。所以不同操作系統(tǒng)的代碼相互拷貝,有時(shí)會(huì)造成換行失敗。

進(jìn)度條打印代碼

如下圖:

1. char*c1是用來(lái)制造旋轉(zhuǎn)的視覺(jué)效果的,有些場(chǎng)景會(huì)需要這種效果,如下載文件時(shí),文件過(guò)大,導(dǎo)致進(jìn)度緩慢,進(jìn)度一直在比如66%,如果不存在旋轉(zhuǎn)或者其他視覺(jué)效果時(shí),可能會(huì)讓用戶認(rèn)為卡機(jī)了,所以需要制造一個(gè)無(wú)論何時(shí)都會(huì)發(fā)生視覺(jué)變化的效果,如下面的旋轉(zhuǎn)。c1中有 \\ ,也是為了轉(zhuǎn)義。

2. 在Linux中sleep是以秒為單位,太慢了,所以下面使用了usleep,以微秒為單位,1000微秒等于1毫秒,10000微妙等于10毫秒,等于0.01秒。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前文章:編寫(xiě)進(jìn)度條小程序以及所需知識(shí)點(diǎn)-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://weahome.cn/article/csheoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部