1.回车换行:\n表示既回车又换行,但这两者在本质上不是一个操作,换行只光标垂直移动到下一行,回车表示光标从换行位置换到每行的开头
2.缓冲区:c语言维护的一段内存
3.如果需要强制刷新,则需要三个基本流:标准输入(stdin),标准输出(显示器,stdout),标准错误流(stderr),如果需要刷新流则输入fflush(文件流)(提前执行缓冲区程序 )
3.首先构建目录文件:使用mkdir目录构建一个名为process的目录,再写里面的文件:proCess.h,proCess.c,main.c使用多文件操作,分别对应头文件(stdio,once命令表示头文件只执行一次),程序文件(暂时为空),main(主要文件)
#pragma once
#include<stdio.h>
然后是makefile文件(使用make进行编译),$@代表左边的文件,$^代表右边所有的依赖对象也就是两个文件,以及.PHNOY的强制执行(防止重名)
process:proCess.c main.c
gcc -o $@ $^
.PHONY:clean
clean:
rm-f process
最后是main文件,解析一下,首先c语言输出到屏幕上的命令在c语言命令读取未到return 0的时候会被暂时存放在缓冲区,所以正常输出会先停顿几秒再输出全部的数字,而我们需要倒计时类似的输出,所以要在每次sleep后直接输出数字,也就是刷新缓冲区,就要使用fflush(文件流)的命令,而我们又希望数字都在一个位置而不使用\n,所以要使用\r打印,然后就是防止count>10的打印方式-(左对齐)和2(限制长度,如果count>100则换为3)
#include"proCess.h"
#include<unistd.h>
int main()
{
int count=10;
while(count)
{
printf("%-2d\r",count);
count--;
fflush(stdout);
sleep(1);
}
printf("希望考试别太难");
return 0;
}