1、光標旋轉
首先問大家一個問題,大家覺得回車與換行是一個相同的概念嗎?
很多人往往把它們兩個當作是一個相同的概念,為什么會這么說呢?回想一下'\n',大家覺得這是回車符號呢?還是換行符號呢?好像我們在日常中并沒有特意區分這兩個概念,我們既說'\n'是一個回車符號,也說這是一個換行符號,這就是我們混淆的表象,但回車與換行確實兩個不同的概念,接下來帶大家了解一下回車與換行吧!
回車:代表的是光標回到當前行的最開始的位置。
換行:代表的是光標移動到下一行。
根據上面的概念,真正的回車符號應該是'\r',即回到當前行的起始位置,而我們通常了解的'\n'應該是回車換行符,因為它的功能既包括了回車,也包括了換行,即光標跳轉到下一行的起始位置。
而我們今天講的光標旋轉功能就是利用了回車符'\r',接下來廢話不多說,直接上代碼!然會根據代碼給大家進行講解。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#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; } |
這個程序首先是定義了一個char類型的數組lable,里面存儲的元素依次為'| / - \',至于最后為什么用了兩個\\,在程序中已經給出了相應的解釋,然后構造一個死循環,對數組元素逐個循環打印,為了保證在打印完尾元素之后打印的是首元素,通過對index對4取余保證數組下標是始終為0~3,這樣保證了數組元素的循環打印。
通過'\r'進行回車操作回到輸出行的起始位置保證了每一次的輸出都是在一行的起始位置處進行輸出,然后通過休眠函數Sleep()進行控制每一次輸出的間隔進而形成動態效果,這樣就實現了光標旋轉的功能。
注意:使用休眠函數需要引用windows.h頭文件,休眠函數中()內的數字單位為毫秒。
2、倒計時
倒計時功能相對來說并不難實現,直接上代碼,然后給大家簡單解釋一下。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#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; } |
其實這段代碼也是簡單的使用了'\r'與Sleep()休眠函數,然后實現了倒計時的功能。
兩個程序的共同點是均使用了'\r'與Sleep()函數,看吧,這個我們在C語言中忽略的小小的點竟然能發揮處如此巨大的作用,想不到吧!好了,今天的分享到此結束,感謝大家的支持,更多關于C語言光標旋轉與倒計時功能的資料請關注服務器之家其它相關文章!
原文鏈接:https://blog.csdn.net/m0_57304511/article/details/121296985