C語(yǔ)言光標(biāo)旋轉(zhuǎn)與倒計(jì)時(shí)功能實(shí)現(xiàn)示例詳解
1、光標(biāo)旋轉(zhuǎn)
首先問大家一個(gè)問題,大家覺得回車與換行是一個(gè)相同的概念嗎?
很多人往往把它們兩個(gè)當(dāng)作是一個(gè)相同的概念,為什么會(huì)這么說呢?回想一下'\n',大家覺得這是回車符號(hào)呢?還是換行符號(hào)呢?好像我們?cè)谌粘V胁]有特意區(qū)分這兩個(gè)概念,我們既說'\n'是一個(gè)回車符號(hào),也說這是一個(gè)換行符號(hào),這就是我們混淆的表象,但回車與換行確實(shí)兩個(gè)不同的概念,接下來帶大家了解一下回車與換行吧!
回車:代表的是光標(biāo)回到當(dāng)前行的最開始的位置。
換行:代表的是光標(biāo)移動(dòng)到下一行。
根據(jù)上面的概念,真正的回車符號(hào)應(yīng)該是'\r',即回到當(dāng)前行的起始位置,而我們通常了解的'\n'應(yīng)該是回車換行符,因?yàn)樗墓δ芗劝嘶剀嚕舶藫Q行,即光標(biāo)跳轉(zhuǎn)到下一行的起始位置。
而我們今天講的光標(biāo)旋轉(zhuǎn)功能就是利用了回車符'\r',接下來廢話不多說,直接上代碼!然會(huì)根據(jù)代碼給大家進(jìn)行講解。
#include<stdio.h> #include<windows.h> int main() { int index = 0; const char* lable = "|/-\\";// \是特殊字符,如果想取字符本身,就要在前面加'\' while(1) { index %= 4; printf("[%c]\r", lable[index]); index++; Sleep(30); } system("pause"); return 0; }
這個(gè)程序首先是定義了一個(gè)char類型的數(shù)組lable,里面存儲(chǔ)的元素依次為'| / - \',至于最后為什么用了兩個(gè)\\,在程序中已經(jīng)給出了相應(yīng)的解釋,然后構(gòu)造一個(gè)死循環(huán),對(duì)數(shù)組元素逐個(gè)循環(huán)打印,為了保證在打印完尾元素之后打印的是首元素,通過對(duì)index對(duì)4取余保證數(shù)組下標(biāo)是始終為0~3,這樣保證了數(shù)組元素的循環(huán)打印。
通過'\r'進(jìn)行回車操作回到輸出行的起始位置保證了每一次的輸出都是在一行的起始位置處進(jìn)行輸出,然后通過休眠函數(shù)Sleep()進(jìn)行控制每一次輸出的間隔進(jìn)而形成動(dòng)態(tài)效果,這樣就實(shí)現(xiàn)了光標(biāo)旋轉(zhuǎn)的功能。
注意:使用休眠函數(shù)需要引用windows.h頭文件,休眠函數(shù)中()內(nèi)的數(shù)字單位為毫秒。
2、倒計(jì)時(shí)
倒計(jì)時(shí)功能相對(duì)來說并不難實(shí)現(xiàn),直接上代碼,然后給大家簡(jiǎn)單解釋一下。
#include<stdio.h> #include<windows.h> int main() { int i = 9; for(;i>=0;i--) { printf("[%d]\r",i); Sleep(500); } system("pause"); return 0; }
其實(shí)這段代碼也是簡(jiǎn)單的使用了'\r'與Sleep()休眠函數(shù),然后實(shí)現(xiàn)了倒計(jì)時(shí)的功能。
兩個(gè)程序的共同點(diǎn)是均使用了'\r'與Sleep()函數(shù),看吧,這個(gè)我們?cè)贑語(yǔ)言中忽略的小小的點(diǎn)竟然能發(fā)揮處如此巨大的作用,想不到吧!好了,今天的分享到此結(jié)束,感謝大家的支持,更多關(guān)于C語(yǔ)言光標(biāo)旋轉(zhuǎn)與倒計(jì)時(shí)功能的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Qt使用TabWidget實(shí)現(xiàn)多窗體功能
Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫(kù),利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,本章將重點(diǎn)介紹TabWidget標(biāo)簽組件的常用方法及靈活運(yùn)用,需要的朋友可以參考下2023-12-12C++實(shí)現(xiàn)商店倉(cāng)庫(kù)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)商店倉(cāng)庫(kù)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03在C++中實(shí)現(xiàn)云端存儲(chǔ)變量的操作步驟
隨著云計(jì)算技術(shù)的快速發(fā)展,現(xiàn)在我們可以將數(shù)據(jù)存儲(chǔ)在云端,以便于在不同設(shè)備和地點(diǎn)訪問,在C++中,我們也可以通過一些方法來實(shí)現(xiàn)這個(gè)功能,本文將詳細(xì)介紹如何在C++中實(shí)現(xiàn)云端存儲(chǔ)變量,需要的朋友可以參考下2023-11-11C++中簡(jiǎn)單讀寫文本文件的實(shí)現(xiàn)方法
本篇文章是對(duì)C++中簡(jiǎn)單讀寫文本文件的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++ 中"priority_queue" 優(yōu)先級(jí)隊(duì)列實(shí)例詳解
這篇文章主要介紹了C++ 中"priority_queue" 優(yōu)先級(jí)隊(duì)列實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04C++實(shí)現(xiàn)簡(jiǎn)單版通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單版通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06