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

本文介绍了如何在C控制台程序中使用printf显示进度条,包括利用特殊字符实现光标移动、清除行尾内容等技巧,并提供了在Linux和Windows环境下实现的具体方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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类型

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值