目录
一、r和n的理解
二、行缓冲区概念
三、进度条源代码
一、r和n的理解
r:回车;
n:换行;
那么请问这两个有什么区别呢?
比如:我们在编写内容的时候,一行没有写完的情况下,需要换到下一行的开始位置,此时需要两个步骤:
(1)让光标从第一行跳到第二行,但是光标只是垂直向下跳,并没有在第二行的开始。这个操作就是换行(n)。
(2)在第二行让光标跳到最开始的位置,这个操作就是回车(r)。
话不多说,我们进行下面的例子,就可以一目了然,
n和r都存在
既有回车又有换行,所以执行完命令之后,光标会在下一行的开头。
n存在
只有换行的时候,我们运行出来和上面第一种情况相同,原因是,在C语言环境下,自动将其简化,此时的n就表示回车加换行。
r存在
只有回车,我们可以想象到运行的结果是什么样,答案是:什么都不显示。为什么呢?
- 回车之后,光标来到了文本行的开始位置,此时linux的命令行就会从光标处开始,将我们的文本覆盖掉,我们就什么也看不到。
二、行缓冲区概念
首先先看看下面3段代码的现象:
#include
#include
int main()
{
printf("hello world!n");
sleep(3);
return 0;
}
结果:直接打印出hello world!,然后停留3秒之后换行给出新的命令。
#include
#include
int main()
{
printf("hello world!");
sleep(3);
return 0;
}
刚开始不显示,停留3秒之后,在一行中显现hello world!和新的命令行。
说明在刚开始运行的时候,数据被存在行缓冲区中的,3秒过后,才刷新出来。
#include
#include
int main()
{
printf("hello world!");
fflush(stdout);
sleep(3);
return 0;
}
直接显现hello world!,然后停留3秒之后,在其后面直接给出新的命令行。
三、进度条源代码
(1)proc.h
#pragma once
#include
void process();
(2)proc.c
void process()
{
const char *lable = "|/-\";
char bar[SIZE];
memset(bar,0,sizeof(bar));
int i = 0;
while(i
(3)main.c
#include "proc.h"
int main()
{
process();
return 0;
}
运行结果:
本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。
老铁们,记着点赞加关注!!!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net