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;}