当前位置:   article > 正文

c语言中回车vs换行你真的理解了吗_c语言回车换行

c语言回车换行

1.回车vs换行

回车:光标回到该行首位置

换行:光标移动到当前位置的下一行位置,比如当前光标在第一行第三列,那么换行之后就是第二行第三列;

我们在编写c语言代码的时候,经常使用“\n”,其实他的含义并不是回车,而是换行+回车,而如果我们只想回到该行首位置的话,要使用“\r”。因此我们要知道我们平时把“\n”说成回车是一种不太严谨的行为。

2.c语言如何实现倒计时

如果我们在没有深刻的理解回车和换行的关系之前,我们写一个倒计时的代码可能会写成这样

  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 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

而这样写的结果是这样的

image-20230214154214780

显然这不是我们想要的结果,我们想打印数字之后,光标重新回到行首位置,应该使用“\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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.c语言实现进度条

  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 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

打印出来的结果是这样的

image-20230214173027691

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/228471
推荐阅读
相关标签
  

闽ICP备14008679号