fprintf 控制台代码,可以控制光标等,控制台显示时间源码
2010-01-23 01:34
393 查看
http://blog.csdn.net/liumang_D/archive/2009/11/30/4907083.aspx
给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");
颜色分为背景色和字体色,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 显示光标
一个比较实用的例子,可以延伸很多东西哦!
//使用终端的控制码做的,在当前终端动态显示时间
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <signal.h>
#include <time.h>
void hangup(int sig)
{
exit(sig);
}
int main(int argc, char *argv[])
{
FILE *fp = NULL;
char datestr[11] = {0};
char timestr[10] = {0};
char dkcmd[]="\033[2h";
char ekcmd[]="\033[2l";
char sccmd[]="\0337";
char rccmd[]="\0338";
char lc1cmd[]="\033[1;70f";
char lc2cmd[]="\033[2;71f";
time_t tm;
fp=fopen(ttyname(STDERR_FILENO), "w"); //这里用的是标准错误输出 //可改为"/dev/tty0"就是lcd控制台
assert(fp); //判定fp不为NULL,如果为NULL,运行时会反应出对应的错误并终止程序的运行
signal(SIGHUP, hangup);
while(1){
time(&tm);
strftime(datestr,sizeof(datestr),"%Y-%m-%d",localtime(&tm));
strftime(timestr,sizeof(timestr),"%H:%M:%S",localtime(&tm));
fprintf(fp,"%s",dkcmd);
fprintf(fp,"%s",sccmd);
fprintf(fp,"%s",lc1cmd);
fprintf(fp,"%s",datestr);
fprintf(fp,"%s",lc2cmd);
fprintf(fp,"%s",timestr);
fprintf(fp,"%s",rccmd);
fprintf(fp,"%s",ekcmd);
fflush(fp);
sleep(1);
}
fclose(fp);
return 0;
}
给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");
颜色分为背景色和字体色,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 显示光标
一个比较实用的例子,可以延伸很多东西哦!
//使用终端的控制码做的,在当前终端动态显示时间
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <assert.h>
#include <signal.h>
#include <time.h>
void hangup(int sig)
{
exit(sig);
}
int main(int argc, char *argv[])
{
FILE *fp = NULL;
char datestr[11] = {0};
char timestr[10] = {0};
char dkcmd[]="\033[2h";
char ekcmd[]="\033[2l";
char sccmd[]="\0337";
char rccmd[]="\0338";
char lc1cmd[]="\033[1;70f";
char lc2cmd[]="\033[2;71f";
time_t tm;
fp=fopen(ttyname(STDERR_FILENO), "w"); //这里用的是标准错误输出 //可改为"/dev/tty0"就是lcd控制台
assert(fp); //判定fp不为NULL,如果为NULL,运行时会反应出对应的错误并终止程序的运行
signal(SIGHUP, hangup);
while(1){
time(&tm);
strftime(datestr,sizeof(datestr),"%Y-%m-%d",localtime(&tm));
strftime(timestr,sizeof(timestr),"%H:%M:%S",localtime(&tm));
fprintf(fp,"%s",dkcmd);
fprintf(fp,"%s",sccmd);
fprintf(fp,"%s",lc1cmd);
fprintf(fp,"%s",datestr);
fprintf(fp,"%s",lc2cmd);
fprintf(fp,"%s",timestr);
fprintf(fp,"%s",rccmd);
fprintf(fp,"%s",ekcmd);
fflush(fp);
sleep(1);
}
fclose(fp);
return 0;
}
相关文章推荐
- DIV模拟LED,js控制显示时间,大家可以复制代码到HTML文件,执行HTML就行了
- 电子表代码,用C语言写的,可以显示系统时间和年月日,而且可以改变时间!
- 制作一个控制台小程序,要求:用户可以在控制到录入学生的姓名,当用户输入quit(不区分大小写)时,程序停止接收用户输入,并且显示出学生个数及姓名
- JS 实现几秒跳转的代码可以显示时间
- Toast源码分析 控制显示时间
- 用"button"的"onMouseMove事件"和"onMouseOut时间"可以控制样式!代码如下:
- 当程序执行时间很快,控制台没显示执行代码和数据库
- 显示日期与时间的代码,可以在指定日期是什么节日
- PHP将DateTime对象转化为友好时间显示的实现代码
- Android:剖析源码,随心所欲控制Toast显示
- mysql 显示SQL语句执行时间的代码
- 代码中设置光标显示在EditText文本末尾
- 使用javascript实现有效时间的控制,并显示将要过期的时间
- MFC中代码控制控件是否显示与是否可用等
- JAVASCRIPT 显示日期时间的代码
- bootstrap代码控制模态框的显示和隐藏
- 日历和时间显示代码
- 1f12可以查看最终的静态html页面,和JavaScript源代码 ,那自己写js源码不就泄露了吗 2由JavaScript代码暴露,重新认识”前端“和”后端“
- 动态时间、页面中动态显示时间源码!
- ASP.NET显示农历时间代码,可直接使用