C語言實現進度條 背景 實現

2021-07-27 04:30:53 字數 1486 閱讀 3703

一、c語言中回車與換行

/n 換行

將游標移動到下一行第一格

相當於平時用的回車

/r 回車 將游標移動到當前行第一格

背景: 在計算機還沒有出現之前,有一種叫做電傳打字機(teletype model 33)的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。乙個叫做「回車」,告訴打字機把列印頭定位在左邊界;另乙個叫做「換行」,告訴打字機把紙向下移一行。

這就是「換行」和「回車」的來歷,從它們的英語名字上也可以看出一二。

後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,儲存器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加乙個就可以。於是,就出現了分歧。 

二、fflush函式

fflush()會強迫將緩衝區內的資料寫回引數stream 指定的檔案中. 如果引數stream為null,fflush()會將所有開啟的檔案資料更新.

scanf()函式接收輸入資料時,遇以下情況結束乙個資料的輸入:(不是結束該scanf函式,scanf函式僅在每乙個資料域均有資料,並按回車後結    束)。 

①   遇空格、「回車」、「跳格」鍵。 

②   遇寬度結束。 

③   遇非法輸入。 

鍵盤緩衝區就可能有殘餘資訊問題。

scanf()函式應該只是掃瞄stdin流,這個殘存資訊是在stdin中 

解決就要在scanf()函式之後加個fflush(stdin)

三、帶執行狀態動畫及百分比的進度條

void proc()

charbuf[103];

memset(buf,' ', sizeof(buf));

buf[0]= '[';

buf[101]= ']';

buf[102]= '\0';

inti = 0;

charindex[6] = "-\\|/\0";

while(i <= 100)

buf[i]= '=';

printf("%s[%d%%][%c]\r", buf, i, index[i % 4]);

fflush(stdout);//重新整理緩衝區

sleep(200);

i++;

printf("\n");

二、

scanf()函式接收輸入資料時,遇以下情況結束乙個資料的輸入:(不是結束該scanf函式,scanf函式僅在每乙個資料域均有資料,並按回車後結    束)。 

①   遇空格、「回車」、「跳格」鍵。 

②   遇寬度結束。 

③   遇非法輸入。 

鍵盤緩衝區就可能有殘餘資訊問題。

scanf()函式應該只是掃瞄stdin流,這個殘存資訊是在stdin中 

解決就要在scanf()函式之後加個fflush(stdin)

C語言實現文字進度條

void fun printf 資料輸入中,請稍後 n while i 50 在這裡插入描述 n資料輸入完畢 n 50s 意思是輸出乙個 50個空格 3d 意思是輸出 100 改變printf輸出字型顏色 include setconsoletextattribute getstdhandle st...

C 進度條實現

namespace progress namespace progress public mainfrm private void button1 click object sender,eventargs e private void handlethread 執行緒處理函式,實現耗時任務 cla...

Linux下用C語言實現彩色的進度條

在linux下實現進度條程式.通過makefile進行編譯.建議自主完成乙個彩色的進度條.1 建立makefile檔案並編寫 2 vim makefile 如下 pb pb.c gcc pb.c o pb phony clean clean rm f pb.i pb.s pb.o pb 3 建立pr...