赞
踩
回车:光标回到该行首位置
换行:光标移动到当前位置的下一行位置,比如当前光标在第一行第三列,那么换行之后就是第二行第三列;
我们在编写c语言代码的时候,经常使用“\n”,其实他的含义并不是回车,而是换行+回车,而如果我们只想回到该行首位置的话,要使用“\r”。因此我们要知道我们平时把“\n”说成回车是一种不太严谨的行为。
如果我们在没有深刻的理解回车和换行的关系之前,我们写一个倒计时的代码可能会写成这样
1 #include <stdio.h>
2 #include <unistd.h>
3 int main()
4 {
5 int count = 9;
6 while(count)
7 {
8 printf("%d\n", count);
9 fflush(stdout);
10 count--;
11 sleep(1);
12 }
13 return 0;
14 }
而这样写的结果是这样的
显然这不是我们想要的结果,我们想打印数字之后,光标重新回到行首位置,应该使用“\r”,我们主要将代码中的“\n”修改成“\r”就好了
1 #include <stdio.h>
2 #include <unistd.h>
3 int main()
4 {
5 int count = 9;
6 while(count)
7 {
8 printf("%d\r", count);
9 fflush(stdout);
10 count--;
11 sleep(1);
12 }
13 return 0;
14 }
1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 void progress() 5 { 6 const char* lable = "|/-\\"; 7 char bar[101]; 8 memset(bar, '\0', sizeof(bar)); 9 for(int i = 0; i <= 100; i++) 10 { 11 //printf("[%-100s][%d%%][%c]\r", bar, i, lable[i%4]); 12 //你可以使用颜色控制使进度条变得更美观 13 printf("\033[42;34;4m[%-100s]\033[0m[%d%%][%c]\r", bar, i, lable[i%4]); 14 fflush(stdout); 15 usleep(50000); 16 bar[i] = '#'; 17 } 18 printf("\n"); 19 } 20 int main() 21 { 22 progress(); 23 return 0; 24 }
打印出来的结果是这样的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。