可以讲解一下C语言控制台的配色和代码吗?以及控制台的字体颜色
时间: 2023-12-17 17:05:27 浏览: 92
当我们在C语言控制台输出文本时,除了可以输出文本内容之外,还可以对文本的颜色进行设置,来使输出的文本更加丰富、直观。控制台的颜色设置是通过Windows API函数`SetConsoleTextAttribute()`来实现的。
`SetConsoleTextAttribute()`函数可以设置输出文本的前景色和背景色,前景色指的是文本本身的颜色,而背景色则是文本所在的背景颜色。该函数的原型如下:
```c
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput,
WORD wAttributes
);
```
其中,`hConsoleOutput`参数指定了要设置属性的控制台屏幕缓冲区的句柄,可以通过`GetStdHandle(STD_OUTPUT_HANDLE)`函数获取。`wAttributes`参数指定了输出文本的属性,其中低4位指定前景色,高4位指定背景色。下面是常用的颜色属性值:
| 颜色属性值 | 前景色 | 背景色 |
| --------- | ------ | ------ |
| 0 | 黑色 | 黑色 |
| 1 | 蓝色 | 蓝色 |
| 2 | 绿色 | 绿色 |
| 3 | 浅绿色 | 浅绿色 |
| 4 | 红色 | 红色 |
| 5 | 紫色 | 紫色 |
| 6 | 黄色 | 黄色 |
| 7 | 白色 | 白色 |
| 8 | 灰色 | 灰色 |
| 9 | 淡蓝色 | 淡蓝色 |
| 10 | 淡绿色 | 淡绿色 |
| 11 | 淡浅绿 | 淡浅绿 |
| 12 | 淡红色 | 淡红色 |
| 13 | 淡紫色 | 淡紫色 |
| 14 | 淡黄色 | 淡黄色 |
| 15 | 亮白色 | 亮白色 |
例如,我们可以使用以下代码将控制台的前景色设置为红色、背景色设置为黄色:
```c
#include <stdio.h>
#include <windows.h>
int main()
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
WORD color = FOREGROUND_RED | BACKGROUND_YELLOW | FOREGROUND_INTENSITY;
SetConsoleTextAttribute(handle, color);
printf("Hello World!");
return 0;
}
```
除了设置前景色和背景色之外,我们还可以使用`GetConsoleScreenBufferInfo()`函数获取当前控制台屏幕缓冲区的属性信息,包括前景色和背景色等,以便恢复默认的控制台颜色。例如:
```c
#include <stdio.h>
#include <windows.h>
int main()
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO info;
GetConsoleScreenBufferInfo(handle, &info);
WORD old_color = info.wAttributes;
WORD color = FOREGROUND_RED | BACKGROUND_YELLOW | FOREGROUND_INTENSITY;
SetConsoleTextAttribute(handle, color);
printf("Hello World!");
SetConsoleTextAttribute(handle, old_color);
return 0;
}
```
在控制台中,我们也可以通过以下代码来设置控制台的字体颜色,以便更改输出文本的颜色:
```c
#include <stdio.h>
#include <windows.h>
int main()
{
system("color 4f");
printf("Hello World!");
return 0;
}
```
其中,`system("color 4f")`指令中的`4`表示红色,`f`表示白色,可以根据需要更改。需要注意的是,该指令只能在Windows系统上执行,且只能在控制台中执行,不能在IDE等其他环境中执行。
阅读全文