目录
前期我已经和大家聊过Linux一些常用指令、权限、gcc翻译过程、make/makefile 等相关知识,今天结合这些基础知识来写一个Linux下的小程序。
在Linux目录下创建两个文件:makefile 和 project.c ,在project.c中写一个简单的打印hello world,并让其休眠2秒后打印。


仔细看,左边helloworld后跟了 ' \n ' ,此时出去执行make,语句被直接打印出来;
右边hello world后没跟 ' \n ',此时出去执行make,语句过了两秒才被打印出来。
说明:
1、程序执行默认是按顺序结构执行(没有判断、循环情况下),所以一定是printf 先于sleep执行,但是先执行 != 数据先显示,printf的确执行了但是没有显示出来而执行了sleep休眠。当sleep结束时才刷新的数据。
2、sleep期间printf 一定执行完打印了,那数据在哪里呢?——在缓冲区。当sleep执行完,缓冲区的数据才打印到终端上。
3、那为什么' \n '直接打印了?—— ' \n '是行缓冲,只要有,这一行包括前面的内容就打印到终端
4、有什么办法可以在没有 ' \n '的情况下直接打印————fflush(stdout) 刷新标准输出流。
1、回车:\r ,这里的回车不是我们口头上说的回车,口头上的回车其实是回车+换行。
这里回车是让光标回到一行的开始(覆盖)
2、换行:\n,换行是换到下一行的该位置。
3、回车换行:\r + \n,即口头上的回车,跳到下一行的开头。
老式键盘上的回车键意思就是回车+换行。
根据这个结合上面的缓冲区,可以写一个倒计时小程序。

注意:1、%2d \r,不用\n,因为倒计时需要在一行内执行,所以不需要换行,\r 让光标回退到一行开始处,会覆盖之前的内容。
2、%2d,格式控制为2个字符位,否则修改的只是第一个字符位的内容。cnt = 10,%d倒计时就是10,90,80...
3、fflush(stdout)刷新标准输出流,否则将没有打印显示(因为缓冲区问题)
接下来我们写一个进度条小程序,也是运用上面的知识。

prograss.c:
