C/C++ 控制台演示彩色输出进度

本文介绍如何在Windows控制台中实现彩色进度显示,并详细解释了通过设置控制台文字颜色来增强输出信息的可读性。利用C语言,结合Windows API函数SetConsoleTextAttribute设置文本颜色,展示了具体的实现代码。

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

    

#include <stdio.h>  
#include <windows.h>  

BOOL SetConsoleColor(WORD wAttributes); 

int main()  
{  
    SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY);

    const int NUM  = 50;//任务完成总量  

    for (int i = 0; i < NUM; i++)  
    {  
        //用Sleep()来代替一些费时的操作,如读写文件,大量的运算。  
        Sleep(1000); //some work to do  
        //输出百分比  
        printf("%.2lf%%\r", i * 100.0/ NUM);  
    }  
    return 0;  
}  


BOOL SetConsoleColor(WORD wAttributes)  
{  
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);  
    if (hConsole == INVALID_HANDLE_VALUE)  
        return FALSE;  

    return SetConsoleTextAttribute(hConsole, wAttributes);  
} 

  

  

  知识点:

  1) \r   它是转义字符中的回车符,准确的讲应该是回到本行开始处。

  2) HANDLE GetStdHandle(DWORD nStdHandle);

   参数有:STD_INPUT_HANDLE,STD_OUTPUT_HANDLE及STD_ERROR_HANDLE。传入STD_OUTPUT_HANDLE就可以得到控制台输出设备的句柄。

    BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput,WORD wAttributes);

   第一个参数为控制台standard input, standard output, or standard error的设备句柄,第二个参数用来设备设备的属性,这里详细介绍下表示颜色的参数。

    

   文字颜色使用如下组合:

   FOREGROUND_BLUE        0x0001 // text color contains blue.

   FOREGROUND_GREEN       0x0002 // text color contains green.

   FOREGROUND_RED         0x0004 // text color contains red.

   FOREGROUND_INTENSITY   0x0008 // text color is intensified.高亮颜色

   背景颜色使用如下组合:

   BACKGROUND_BLUE           0x0010 // background color contains blue.

   BACKGROUND_GREEN         0x0020 // background color contains green.

   BACKGROUND_RED             0x0040 // background color contains red.

       BACKGROUND_INTENSITY   0x0080 // background color is intensified.

      上面的颜色可以任意组合,如知道黄色可以由红色和绿色组成,所以可以用FOREGROUND_GREEN | FOREGROUND_RED来表示黄色的文字。

       默认情况下控制台的文字颜色是白色即用FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE也可以直接用7表示,背景颜色为黑色即用0表示。

 

转载于:https://www.cnblogs.com/MakeView660/p/6533944.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值