Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239517
  • 博文数量: 74
  • 博客积分: 450
  • 博客等级: 下士
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-12 08:46
文章分类

全部博文(74)

文章存档

2019年(3)

2018年(11)

2017年(5)

2016年(24)

2015年(20)

2007年(11)

我的朋友

分类: C/C++

2018-03-26 15:20:27

自己在做一个简单的测试程序,如何能实现与top命令一样的,在固定位置不停刷新呢?

原来printf函数就有对屏幕光标位置控制的功能,抄录如下:

printf输出颜色和ANSI控制码(高亮,下划线,闪烁,光标位置,清屏等)
给printf的输出加上些特效比如颜色,可以让打印信息更鲜明,在debug的时候特别有用。

颜色:

#define NONE "/033[m"

#define RED "/033[0;32;31m"

#define LIGHT_RED "/033[1;31m"

#define GREEN "/033[0;32;32m"

#define LIGHT_GREEN "/033[1;32m"

#define BLUE "/033[0;32;34m"

#define LIGHT_BLUE "/033[1;34m"

#define DARY_GRAY "/033[1;30m"

#define CYAN "/033[0;36m"

#define LIGHT_CYAN "/033[1;36m"

#define PURPLE "/033[0;35m"

#define LIGHT_PURPLE "/033[1;35m"

#define BROWN "/033[0;33m"

#define YELLOW "/033[1;33m"

#define LIGHT_GRAY "/033[0;37m"

#define WHITE "/033[1;37m"

比如:

printf("/033[31m ####----->> /033[32m" "hello/n" "/033[m")

int main()

{

printf( CYAN "current function is %s " GREEN " file line is %d/n" NONE,

__FUNCTION__, __LINE__ );

fprintf(stderr, RED "current function is %s " BLUE " file line is %d/n" NONE,

__FUNCTION__, __LINE__ );

return 0;

}

颜色分为背景色和字体色,30~39用来设置字体色,40~49设置背景:

背景色 字体色

40: 黑 30: 黑

41: 红 31: 红

42: 绿 32: 绿

43: 黄 33: 黄

44: 蓝 34: 蓝

45: 紫 35: 紫

46: 深绿 36: 深绿

47: 白色 37: 白色

记得在打印完之后,把颜色恢复成NONE,不然再后面的打印都会跟着变色。

另外,还可以加一些ANSI控制码。加颜色只是以下控制码中的一种:

/033[0m 关闭所有属性

/033[1m 设置高亮度

/033[4m 下划线

/033[5m 闪烁

/033[7m 反显

/033[8m 消隐

/033[30m -- /033[37m 设置前景色

/033[40m -- /033[47m 设置背景色

/033[nA 光标上移n行

/033[nB 光标下移n行

/033[nC 光标右移n行

/033[nD 光标左移n行

/033[y;xH设置光标位置

/033[2J 清屏

/033[K 清除从光标到行尾的内容

/033[s 保存光标位置

/033[u 恢复光标位置

/033[?25l 隐藏光标

/033[?25h 显示光标

阅读(1618) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~