行缓冲区概念
首先来看几个代码:
#include <stdio.h>
int main()
{
printf("hello Makefile!\n");
sleep(3);
return 0;
}
现象:
#include <stdio.h>
int main()
{
printf("hello Makefile!");
sleep(3);
return 0;
}
现象:
#include <stdio.h>
int main()
{
printf("hello Makefile!");
fflush(stdout);
sleep(3);
return 0;
}
现象:
行缓冲:遇到\n就刷新缓冲区,当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作,典型代表是键盘输入数据和输出信息到屏幕。
进度条代码:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
char buf[102]="#";
int i;
char *r="-/|-\\|";
for(i=1;i<=100;i++)
{
printf("\033[33m[%-100s][%c]\033[0m\r\r",buf,r[i%6]);
buf[i]='#';
fflush(stdout);
usleep(100000);
}
printf("\n");
}