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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!