初學c的小夥伴可能已經對那個黑底白字的框有些厭倦了,不妨加點顏色,增加加可讀性.
廢話不多說,先來看一下效果圖:
/*
顏色函數SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),前景色 | 背景色 | 前景加強 | 背景加強);
前景色:數字0-15 或 FOREGROUND_XXX 表示 (其中XXX可用BLUE、RED、GREEN表示)
前景加強:數字8 或 FOREGROUND_INTENSITY 表示
背景色:數字16 32 64 或 BACKGROUND_XXX 三種顏色表示
背景加強: 數字128 或 BACKGROUND_INTENSITY 表示
主要應用:改變指定區域字體與背景的顏色
前景顏色對應值:
0=黑色 8=灰色
1=藍色 9=淡藍色 十六進制
2=綠色 10=淡綠色 0xa
3=湖藍色 11=淡淺綠色 0xb
4=紅色 12=淡紅色 0xc
5=紫色 13=淡紫色 0xd
6=黃色 14=淡黃色 0xe
7=白色 15=亮白色 0xf
也可以把這些值設置成常量。
*/
#include <stdio.h>
#include <windows.h>
void color(short x) //自定義函根據參數改變顏色
{
if(x>=0 && x<=15)//參數在0-15的範圍顏色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); //只有一個參數,改變字體顏色
else//默認的顏色白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
int main()
{
printf("此處爲沒調用顏色函數之前默認的顏色\n");
//調用自定義color(x)函數 改變的顏色
color(0); printf("黑色\n");
color(1); printf("藍色\n");
color(2); printf("綠色\n");
color(3); printf("湖藍色\n");
color(4); printf("紅色\n");
color(5); printf("紫色\n");
color(6); printf("黃色\n");
color(7); printf("白色\n");
color(8); printf("灰色\n");
color(9); printf("淡藍色\n");
color(10); printf("淡綠色\n");
color(11); printf("淡淺綠色\n");
color(12); printf("淡紅色\n");
color(13); printf("淡紫色\n");
color(14); printf("淡黃色\n");
color(15); printf("亮白色\n");
color(16); //因爲這裏大於15,恢復默認的顏色
printf("回到原來顏色\n");
//直接使用顏色函數
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_INTENSITY);
printf("紅色字體 前景加強 綠色背景 背景加強\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15 | 8 | 128 | 64);
printf("亮白色字體 前景加強 紅色背景 背景加強\n");
//聲明句柄再調用函數
HANDLE JB = GetStdHandle(STD_OUTPUT_HANDLE);//創建並實例化句柄
SetConsoleTextAttribute(JB, 2 | 8);
printf("顏色及對應數字表:\n");
for(int i = 0;i < 1000;i ++){
//color(16);printf(" ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);
printf("%-3d", i);
color(16);printf(" ");
if(i % 16 == 0) printf("\n");
}
color(16);
return 0;
//類似的函數還有system("color XX");(X是十六進制0~F之間的數,不過這種函數改變的是整個畫面,而不能讓多處局部變色;
}