C语言输出/输入函数都自带缓冲区,刷新数据的基本单位以行为单位。
对比下两段代码
代码1
#include<stdio.h>
#include<unsitd.h>
int main()
{
printf("hello world!\n");
sleep(5);
return 0;
}
先打印“hello world!”,然后sleep 5秒。
代码2
#include<stdio.h>
#include<unsitd.h>
int main()
{
printf("hello world!");
sleep(5);
return 0;
}
sleep 5秒,然后打印“hello world!”
我要写入的设备为终端,一般情况按行刷新,并不会立即刷新,除非遇见‘\n’。
在编写程序前,我们还需要了解,回车与换行的区别。
回车换行:先回到当前行的开始,在换到新的一行的开始。
回车:只回到最开始。
换行:换到下一行。
在Linux环境中\n表示回车+换行;
#include<stdio.h>
#include<unistd.h> //Linux环境下usleep头文件
int main()
{
int i=0;
char bar[102]; //设置进度条数组
const char* tag="|/-\\"; //设置显示光标
bar[0]=0;
while(i<=100)
{
printf("[%-100s][%2d%%][%c]\r",bar,i,tag[i%4]);
fflush(stdout); //清理缓冲区
bar[i]='#';
i++;
bar[i]=0;
usleep(100000); //时间可以设置,毫秒单位
}
printf("\n");
return 0;
}