上海大型网站,电脑接单做任务平台,株洲房产网,东莞网站建制作1.\r和\n C语言中有很多字符 a.可显字符 b.控制字符 对于回车其实有两个动作#xff0c;首先换行#xff0c;在将光标指向最左侧 \r #xff1a;回车 \n#xff1a;换行 下面举个例子#xff1a; 把\n去掉会怎样 什么都没输出。为什么#xff1f; 2.缓冲区概念 观察下两个… 1.\r和\n C语言中有很多字符 a.可显字符 b.控制字符 对于回车其实有两个动作首先换行在将光标指向最左侧 \r 回车 \n换行 下面举个例子 把\n去掉会怎样 什么都没输出。为什么 2.缓冲区概念 观察下两个代码的区别 上面的代码会等待3s后才输出而下面的代码会直接输出。 不加\n好像是先执行了sleep在执行printf? 并不是 一定是先执行完printf在执行sleep Hello Linux没有被刷新数据一定是在sleep期间被保存起来了为什么\n数据就显示出来了呢 缓冲区有自己的刷新策略只要看到\n就会刷新 为什么没有显示Hello Linux 因为\r将光标移到了最左侧然后显示的Hello Linux被rootikun test覆盖。光标跟显示器匹配光标在哪里显示器就显示在哪里 倒计时小程序 什么都没有显示 改写刷新缓冲区 结果是从屏幕上倒计时从9到0 如果从10开始倒计时呢 3.进度条程序 文件分离 proc.h
#pragma once
#include stdio.h
#includeproc.h
#includestring.h
#includeunistd.h //该头文件是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.hint main()
{process();return 0;
}