赞
踩
接下来通过编写一个进度条小程序来学习了解一些小知识。
目录
我们在计算机的日常使用中,常常认为回车换行是一个动作,即键盘上的enter键实现。但实际上回车代表的是将光标刷新至行起始位置,换行是指将光标刷新至同一列的下一行。下面通过代码来实验一下:
- 代码一:
- 1 #include<stdio.h>
- 2
- 3 int main()
- 4 {
- 5 printf("hello world!\r");
- 6 return 0;
- 7 }
-
- 代码二:
- 1 #include<stdio.h>
- 2
- 3 int main()
- 4 {
- 5 printf("hello world!");
- 6 return 0;
- 7 }

上述的\r表示回车,即将光标刷新至起始行的位置。两段代码运行结果如下:
代码一:
代码二:
首先我们先来看两段代码及其运行结果。
代码一:
- 1 #include<stdio.h>
- 2
- 3 int main()
- 4 {
- 5 printf("hello world!\n");
- 6 sleep(3);
- 7 return 0;
- 8 }
代码二:
- 1 #include<stdio.h>
- 2
- 3 int main()
- 4 {
- 5 printf("hello world!");
- 6 sleep(3);
- 7 return 0;
- 8 }
由于代码执行结果不便保存,所以这里口述表达,自己也可以下去实验下。首先代码一的运行结果是:打印 “hello world!” 字样,然后光标闪烁3秒结束程序。代码二的运行结果是:光标闪烁3秒后,打印字样并结束程序。
原因如下:printf函数输出的内容与最终显示在屏幕上之间存在着一个缓冲区,输出内容会先进入缓冲区后在刷新到屏幕上。为了验证,我们可以通过fflush函数在打印后立即刷新。代码如下:
- 1 #include<stdio.h>
- 2 #include<unistd.h>
- 3
- 4 int main()
- 5 {
- 6 printf("hello world!\n");
- 7 fflush(stdout); // 立即刷新显示器
- 8 sleep(3);
- 9 return 0;
- 10 }
- 1 #include<stdio.h>
- 2 #include<unistd.h>
- 3 #include<string.h>
- 4 #define NUM 100
- 5
- 6 int main()
- 7 {
- 8 char arr[NUM+1];
- 9 memset(arr, '\0', sizeof(arr));
- 10
- 11 const char* label = "|/-\\";
- 12 int i = 0;
- 13 while(i <= 100)
- 14 {
- 15 printf("[%-100s][%3d%%] %c\r", arr, i, label[i%4]);
- 16 fflush(stdout);
- 17 arr[i] = '#';
- 18 i++;
- 19 usleep(50000);
- 20 }
- 21 printf("\n");
- 22 return 0;
- 23 }

下面对进度条程序中重要行代码加以解释:
9行:使用“\0”初始化数组arr
15行:打印进度条,-100表示左对齐留足100个字符位
16行:对应上述“缓冲区的概念”,每次循环后立即刷新
1、在gitee上创建代码仓库
2、在Linux上安装git工具 - yum install git
3、在Linux上创建仓库目录文件 - git clone url
url:仓库链接
4、将需要上传的代码文件放至仓库目录下 - cp 文件名 仓库目录名
5、三板斧 - 进入到仓库目录下
git add 文件名
git commit -m “文件说明”
git push
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。