1.\r和\n
C语言中有很多字符
a.可显字符
b.控制字符
对于回车其实有两个动作,首先换行,在将光标指向最左侧
\r :回车
\n:换行
下面举个例子:
把\n去掉会怎样
什么都没输出。为什么?
2.缓冲区概念
观察下两个代码的区别
上面的代码会等待3s后才输出,而下面的代码会直接输出。
不加\n好像是先执行了sleep,在执行printf” />
为什么没有显示Hello Linux 因为\r将光标移到了最左侧,然后显示的Hello Linux被root@ikun test覆盖。光标跟显示器匹配,光标在哪里,显示器就显示在哪里!
倒计时小程序
什么都没有显示
改写,刷新缓冲区
结果是从屏幕上倒计时从9到0
如果从10开始倒计时呢?
3.进度条程序
文件分离
proc.h
#pragma once#include #include"proc.h"#include#include//该头文件是Linux下的,windows没有#define SIZE 101#define STYLE '='#define ARR '>' extern void process();
proc.c
#include "proc.h"void process(){char bar[SIZE];memset(bar, '\0', sizeof(bar));//初始化barint i = 0;while (i <= 100){printf("[%-100s][%d%%][%c]\r", bar, i); //-100左对齐,fflush(stdout);//刷新缓冲区bar[i++] = STYLE;if (i != 100)bar[i] = ARR;usleep(100000);}printf("\n");}
main.c
#include "proc.h"int main(){process();return 0;}