91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言進度條的實現原理是什么

發布時間:2022-08-29 16:48:05 來源:億速云 閱讀:119 作者:iii 欄目:開發技術

這篇文章主要介紹“C語言進度條的實現原理是什么”,在日常操作中,相信很多人在C語言進度條的實現原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言進度條的實現原理是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

\r和\n

在程序里面,\r\n分別代表什么意思?

\r:表示“回車”,即回到當前行的起始位置

\n:表示換行,即列不變,另其一個新行

行緩沖區

什么是行緩沖區?先別慌,來看代碼一執行會是什么樣的狀態。

//代碼一,mytest.c文件
# include <stdio.h>
int main(void)
{
  printf("hello linux");                                                                                                                                    
  sleep(1);
  return 0;
}

現象:光標休息一秒后,打印出hello linux。

那這個現象是不是說明了,sleep先執行,printf函數后執行呢?

并不是的,在執行sleep函數之前printf函數已經被執行了,只是數據暫時存放到了行緩沖區內,沒有立即刷新出來。行緩存區只有在輸入和輸出中遇到換行符時,緩沖區才立即刷新,然后把數據傳給磁盤,執行真正的I/O操作。

C語言進度條的實現原理是什么

有了一個認知后

//代碼二,mytest.c文件
 # include <stdio.h>
 int main(void)
 {
   printf("hello linux\r");//添加了回車                                                                                                                                    
   sleep(1);
   return 0;
 }

因為內容被放到了行緩沖區內,刷新緩沖區的時候,hello linux本來是刷新出來了的,但是由于有一個\r回車符,然后又回到了行首的位置,導致數據被覆蓋了。所以休眠了一秒之后,什么也沒有被顯示到屏幕上。

C語言進度條的實現原理是什么

進度條

根據上面的行緩存區的知識

總結出進度條的一個制作方法:

假設以#作為進度條的一個顯示,第一次輸出#,立即刷新出來;利用\r回車的知識,第二次讓它回到改行行首的位置,輸出##,立即刷新出來;同樣的第三次回到該行行首,然后輸出###&hellip;&hellip;

想法很美好,理論可以成功,開始實踐&hellip;&hellip;

 # include <stdio.h>
 # include <string.h> //別忘記包含memset函數的頭文件
 int main(void)
 {
   char buffer[102]; //開辟一個能容納102個字符的數組
   memset(buffer, 0, sizeof(buffer));//將字符數組的每一個字節都初始化為0
   int i = 0;
   while(i <= 100)
   {
     printf("[%-100s][%d%%]\r", buffer, i); //控制輸出的格式
     fflush(stdout); //立即刷新標準輸出流                                                                                                                      
     buffer[i++] = '#'; //把i下標的空間初始化為#之后,++i
     usleep(50000); //因為usleep是毫秒為單位,進度條時間可以自己控制
   }                                      
   printf("\n");//最后的時候換個行更加美觀
   return 0;                              
 }

實踐成功,達到了我預期的效果,perfect!

C語言進度條的實現原理是什么

到此,關于“C語言進度條的實現原理是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

章丘市| 怀安县| 仁化县| 西和县| 望江县| 永安市| 林州市| 淮北市| 江西省| 福州市| 井陉县| 陇西县| 四川省| 宝丰县| 庄河市| 开江县| 祁门县| 错那县| 龙游县| 临高县| 阿拉善右旗| 灵宝市| 波密县| 汤原县| 岱山县| 双牌县| 甘洛县| 万宁市| 峨眉山市| 汶川县| 陇南市| 淳化县| 碌曲县| 共和县| 万州区| 奉贤区| 宜兰市| 綦江县| 壶关县| 炉霍县| 保亭|