printf (控制码:颜色 光标 ...)

 

控制码

颜色控制码
  \033[显示方式;前景色;背景色m
  \033[0m 默认
  \033[1;32;40m 绿色
  \033[1;31;40m 红色
 
  显示方式:  0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
  前景色:    30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)
  背景色:    40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋红)、46(青色)、47(白色)
 
  示例代码:  
 printf( "\033[1;31;40m 输出红色字符 \033[0m" );
 
 
其他控制码:
  \033[0m 关闭所有属性 
  \033[1m 设置高亮度 
  \03[4m 下划线 
  \033[5m 闪烁 
  \033[7m 反显 
  \033[8m 消隐 
  \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 显示光标
 
 
 

打印信息无\n输出

在linux系统下, printf函数是行缓冲式的输出,当 printf遇到\n时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout).
因此, printf("p"); 等语句的显示不能立刻显示在屏幕上,但是printf("p\n"); 可以.

为了解决这个问题可以通过如下

// 方法1
printf("p");
fflush(stdout);

// 方法2
fprintf(stderr, "p");

 

打印信息分类输出

int printf(const char *format, arg...);
int fprintf(FILE *stream, const char *format, arg...);

 

printf函数使用的输出设备是标准输出设备,即stdout。
fprintf函数第一个参数使用stdout或stderr进行输出信息分类。
虽然stdout和stderr在正常情况下都指向标准输出设备,但通常程序运行时的命令行参数,可以分别控制stdout和stderr指向不同的设备或文件。
这样,就可以达到对输出信息进行分类控制了。如下面的代码段所示:

test.c
 
// 一般输出信息
extern char *info;
extern char *errinfo;
fprintf(stdout, "%s", info);

// 特别关注的输出信息
fprintf(stderr, "%s", errinfo);

这样,在运行程序时,可以使用如下的命令行:
test 1&>1.txt 2&>2.txt

一般输出信息可以存储到1.txt文件中,特别关注的输出信息可以存储到2.txt文件中。
 
 
 
  
posted @ 2021-06-03 12:26  迷人的危险~  阅读(364)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css