国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

程序進(jìn)度條分析及編程

2019-11-08 18:23:17
字體:
供稿:網(wǎng)友

一:思考思路

       1:簡(jiǎn)單進(jìn)度條的模型類似于   [                                        ] [% 0]                                                     [#                                      ] [%10]           實(shí)際上就是將" # "填充到空白的地方(注:可以用沒有任何數(shù)據(jù)元素的一組字符數(shù)組來表示),保持左右中括號(hào)不變(注:由輸出語句中格式控制符來控制)       2:什么是回車和換行?                      LIUNX環(huán)境下->回車與換行,實(shí)際上在狹義的解釋就像我們寫字,當(dāng)一頁紙我們從第一行第一列寫到第一行最后一列,然后筆尖從第一行最后一列轉(zhuǎn)到 第二行最后一列,這個(gè)就叫做換行 (/n),而從第二行最后一列 轉(zhuǎn)到第二行第一列 叫做回車(/r)。      3:PRintf的緩沖區(qū)問題   

   在printf的實(shí)現(xiàn)中有一步調(diào)用write的操作。而write是一個(gè)系統(tǒng)調(diào)用,系統(tǒng)調(diào)用是軟中斷,頻繁調(diào)用會(huì)使內(nèi)核頻繁陷入內(nèi)核態(tài),效率不是很高,所以printf的實(shí)現(xiàn)中在調(diào)用write之前,加了一個(gè)IO緩沖區(qū)。printf輸出數(shù)據(jù)的時(shí)候?qū)嶋H上是先往用戶空間的IO緩沖區(qū)寫,在滿足條件的情況下才會(huì)調(diào)用write并且刷新緩沖區(qū),這樣會(huì)提高內(nèi)核工作的效率。  滿足條件的情況有以下幾種:

緩沖區(qū)填滿;寫入的字符中有‘/n’;調(diào)用fflush函數(shù)手動(dòng)刷新緩沖區(qū);調(diào)用scanf要從緩沖區(qū)中讀數(shù)據(jù)時(shí),也會(huì)將緩沖區(qū)的數(shù)據(jù)刷新;printf語句生命結(jié)束時(shí);

滿足上面任意一個(gè)條件,緩沖區(qū)都會(huì)進(jìn)行刷新,然后將數(shù)據(jù)輸出至屏幕。緩沖區(qū)的大小一般為1024bytes,我們進(jìn)度條的實(shí)現(xiàn)最多輸出不到150個(gè)字符而且后面還不能加‘/n’換行符。所以我們只能在每次printf后面調(diào)用fflush手動(dòng)刷新IO緩沖區(qū),以達(dá)到在sleep之前輸出printf內(nèi)容的目的。

    

如上圖所示,該輸出結(jié)果的3秒后才輸出 hehe

修改后 正常瞬間輸出

      4:思考                       我們以一個(gè)字符數(shù)組 str [101] 作為被填充體, 以' # '作為填充物,數(shù)組的最后一個(gè)元素為 ' /0 ',一個(gè)' # '表示完成進(jìn)度條的1 %,每一個(gè)進(jìn)度條得提升,我們就輸出一次字符數(shù)組,再利用回車的特性,綜合循環(huán)結(jié)構(gòu)便可以完成這個(gè)代碼

二:代碼實(shí)現(xiàn)

#include<stdio.h>#include <unistd.h>int main(){	int i = 0;	char str[101];	char arr[5] = "-//|/";	str[0] = '/0';		while(i < 100)	{		str[i++] = '#';		str[i] = '/0';		printf("[%-100s][%%%d][%c]/r",str,i,arr[i%4]);		fflush(stdout);		usleep(50000);	}	printf("/n");}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桂林市| 大竹县| 莱芜市| 平果县| 陇南市| 阳泉市| 始兴县| 伊宁市| 肇源县| 汝阳县| 大连市| 福建省| 泉州市| 大足县| 当涂县| 若羌县| 上高县| 开江县| 浦江县| 图木舒克市| 康乐县| 仁寿县| 德清县| 丰宁| 高淳县| 安徽省| 奇台县| 平湖市| 永丰县| 金昌市| 蓝山县| 汉沽区| 新余市| 富平县| 萍乡市| 清水县| 浏阳市| 富顺县| 同江市| 肇源县| 喀喇沁旗|