您的位置:首页 > 编程语言 > C语言/C++

C语言printf格式化控制台移动光标

2018-02-08 10:06 2521 查看
C控制台的程序,用printf输出进度显示的时候,只是进度的数值变化这样比较好看,这在C语言里面有一个'\r'表示回车,就是光标移动到行首,再进行输出,这样就能到达效果。
printf("process %4d \r", process);
for(int i = 0; i < 1000000000; i++)
;
//在Linux下\033[K是清除光标到行尾的数据
printf("process %4d \r\033[K", process);
//Linux下printf有缓冲区,要用fflush来显示,不然不能及时显示
fflush(stdout)在Linux下,光标移动及背景色和字体颜色设置比较容易:
printf("\033[47;31mhello world\033[5m");
47是字背景颜色, 31是字体的颜色, hello world是字符串. 后面的\033[5m是控制码
颜色代码:
QUOTE:
字背景颜色范围: 40--49 字颜色: 30--39
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色
ANSI控制码:
QUOTE:
\033[0m 关闭所有属性 
\033[1m 设置高亮度 
\03[4m 下划线 
\033[5m 闪烁 
\033[7m 反显 
\033[8m 消隐 
\033[30m -- \033[37m 设置前景色 
\033[40m -- \033[47m 设置背景色 
\033[nA 光标上移n行 
\03[nB 光标下移n行 
\033[nC 光标右移n行 
\033[nD 光标左移n行 
\033[y;xH设置光标位置 
\033[2J 清屏 
\033[K 清除从光标到行尾的内容 
\033[s 保存光标位置 
\033[u 恢复光标位置 
\033[?25l 隐藏光标 
\33[?25h 显示光标
若要在windows下移动光标则要调用Windows API:
#include <conio.h>
#include<windows.h>

void setcursor(int x, int y)
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD setps;
setps.X = x; setps.Y = y;
SetConsoleCursorPosition(hCon, setps);
}附:printf %d用于int或者比int小的整数类型
                 %ld用于long类型,%lld用于long long类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: