由进度条程序引发的问题
来源:互联网 发布:centos7 nginx 访问 编辑:程序博客网 时间:2024/06/03 19:02
在写这个函数下我们先进行一些铺垫工作,我们先来看一下fflush()函数
#include <stdio.h> int main(){char c;scanf("%c", &c);printf("%d\n", c);scanf("%c", &c);printf("%d\n", c);return 0;}
输入1运行结果是:
49
10
看到这里肯定很多人觉得很惊讶,其实自己想想,1的ASCILL码就是49,回车的ASCILL码是10,所以结果是这样,可见缓冲区里的数据输入到scanf里了,这个时候就需要用到fflush(),它的功能就是清空缓冲区
再来看一下\r和\n的区别
#include <stdio.h> void Testn(){printf("Testn()::Hello World!\n");}void Testr(){printf("Testr()::Hello World!\r");}int main(){Testn();Testr();system("pause");return 0;}运行结果:
Testn()::Hello World!
请按任意键继续!
只输出了一个并且是Test()的,由此可以判别出来\r和\n的区别,\r功能回到当前行的开头却不移向下一行;\n功能就是光标移到下一行却不会移到这一行的开头
顺便提一下键盘Enter按下后执行\n\r,这就是Enter真正做的事情
有了这些基础知识,接下来进入我们的正题
#include<iostream>#include<windows.h>using namespace std;int main(){char bar[102];memset(bar, 0, sizeof(bar));const char *lable = "|/-\\";for (size_t i = 0; i <= 100; i++){int tmp = i;if (tmp > 4)tmp = tmp % 4;switch (tmp){case 1:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);break;case 2:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);break;case 3:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);break;case 4:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);break;default:break;}printf("[%s][%d%%][%c]\r", bar, i, lable[i % 4]);fflush(stdout);bar[i] = '#';Sleep(100);}printf("\n");return 0;}
运行截图:
阅读全文
0 0
- 由进度条程序引发的问题
- 由简单的进度条所引发的问题
- 由简单的进度条所引发的问题
- 由程序引发的反思
- 进度条所引发的问题
- 由Typedef引发的问题
- 由UseSubmitBehavior引发的问题
- 由static引发的问题
- 由引用引发的问题
- 由LaunchMode引发的问题
- 由++操作引发的问题
- 由const引发的版本控制问题
- 由一个问题引发的思考
- 由py2exe引发的问题及解决方案
- 由object不能比较引发的问题
- 由 EditorBrowableAttribute 引发的一些问题
- Spinner(1): 由SDK引发的问题
- 由py2exe引发的问题及解决方案
- session的创建
- [noip 2017]普及组 T3
- 形象易懂讲解算法I——小波变换
- HTTP协议详解(转载)
- JAVA基础面试(四)
- 由进度条程序引发的问题
- 319. Bulb Switcher
- 函数
- 运维之监控与安全篇------3.监控常用命令 、 Nagios监控
- fiddler本地代理替换js文件
- 调试与异常
- win10 如何打开sql server配置管理器
- MFC应用程序框架分析
- 文章标题