c ansi complete
This commit is contained in:
parent
e558ee3788
commit
b2b03b8589
@ -3,6 +3,12 @@
|
|||||||
## 在代码中检测是否支持ANSI C
|
## 在代码中检测是否支持ANSI C
|
||||||
`#if __STDC__ == 1`
|
`#if __STDC__ == 1`
|
||||||
|
|
||||||
|
## index
|
||||||
|
- [文本样式控制](#文本样式控制)
|
||||||
|
- [color](#color)
|
||||||
|
- [光标控制](#光标控制)
|
||||||
|
- [example](#example)
|
||||||
|
- [进度条](#进度条)
|
||||||
---
|
---
|
||||||
|
|
||||||
## **文本样式控制**
|
## **文本样式控制**
|
||||||
@ -20,7 +26,9 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## **前景色**
|
## **color**
|
||||||
|
|
||||||
|
- **前景色**
|
||||||
| 转义码 | 颜色 | 转义码(亮色) |
|
| 转义码 | 颜色 | 转义码(亮色) |
|
||||||
|---------------|-----------|----------------|
|
|---------------|-----------|----------------|
|
||||||
| `\033[30m` | 黑色 | `\033[90m` |
|
| `\033[30m` | 黑色 | `\033[90m` |
|
||||||
@ -32,9 +40,7 @@
|
|||||||
| `\033[36m` | 青色 | `\033[96m` |
|
| `\033[36m` | 青色 | `\033[96m` |
|
||||||
| `\033[37m` | 白色 | `\033[97m` |
|
| `\033[37m` | 白色 | `\033[97m` |
|
||||||
|
|
||||||
---
|
- **背景色**
|
||||||
|
|
||||||
## **背景色**
|
|
||||||
| 转义码 | 颜色 | 转义码(亮色) |
|
| 转义码 | 颜色 | 转义码(亮色) |
|
||||||
|---------------|-----------|----------------|
|
|---------------|-----------|----------------|
|
||||||
| `\033[40m` | 黑色 | `\033[100m` |
|
| `\033[40m` | 黑色 | `\033[100m` |
|
||||||
@ -46,18 +52,12 @@
|
|||||||
| `\033[46m` | 青色 | `\033[106m` |
|
| `\033[46m` | 青色 | `\033[106m` |
|
||||||
| `\033[47m` | 白色 | `\033[107m` |
|
| `\033[47m` | 白色 | `\033[107m` |
|
||||||
|
|
||||||
---
|
- **RGB 颜色**
|
||||||
|
|
||||||
## **RGB 颜色**
|
|
||||||
如果终端支持 **24-bit 真彩色**,可以使用:
|
如果终端支持 **24-bit 真彩色**,可以使用:
|
||||||
```c
|
```c
|
||||||
printf("\033[38;2;<r>;<g>;<b>m"); // 设置前景色(RGB)
|
printf("\033[38;2;<r>;<g>;<b>m"); // 设置前景色(RGB)
|
||||||
printf("\033[48;2;<r>;<g>;<b>m"); // 设置背景色(RGB)
|
printf("\033[48;2;<r>;<g>;<b>m"); // 设置背景色(RGB)
|
||||||
```
|
```
|
||||||
**示例:**
|
|
||||||
```c
|
|
||||||
printf("\033[38;2;255;100;0m这是橙红色文字\033[0m\n");
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -78,50 +78,37 @@ printf("\033[38;2;255;100;0m这是橙红色文字\033[0m\n");
|
|||||||
| `\033[s` | 保存光标位置 |
|
| `\033[s` | 保存光标位置 |
|
||||||
| `\033[u` | 恢复光标位置 |
|
| `\033[u` | 恢复光标位置 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## **example**
|
## **example**
|
||||||
```
|
|
||||||
|
### **进度条**
|
||||||
|
```c
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <unistd.h> // 用于 sleep 函数
|
||||||
|
|
||||||
#if __STDC__ != 1
|
// 生成 RGB 前景色 ANSI 代码(需确保缓冲区足够大)
|
||||||
#error "NO ansi !"
|
#define GET_RGB(buf,size,r,g,b) do{snprintf(buf, (size), "\033[38;2;%d;%d;%dm", (r), (g), (b));}while(0)
|
||||||
#endif
|
|
||||||
|
|
||||||
int main(void) {
|
void update_progress(int percent) {
|
||||||
printf("-----TEXT STYLE-----\n");
|
char color[32];
|
||||||
printf("\033[0m\\033[0m\033[0m\n");
|
// 根据进度改变颜色(红色 -> 黄色 -> 绿色)
|
||||||
printf("\033[1m\\033[1m\033[0m\n");
|
GET_RGB(color, sizeof(color), 255 * (100 - percent) / 100, 255 * percent / 100, 0);
|
||||||
printf("\033[2m\\033[2m\033[0m\n");
|
|
||||||
printf("\033[3m\\033[3m\033[0m\n");
|
|
||||||
printf("\033[4m\\033[4m\033[0m\n");
|
|
||||||
printf("\033[5m\\033[5m\033[0m\n");
|
|
||||||
printf("\033[6m\\033[6m\033[0m\n");
|
|
||||||
printf("\033[7m\\033[7m\033[0m\n");
|
|
||||||
printf("\033[8m\\033[8m\033[0m\n");
|
|
||||||
printf("\033[9m\\033[9m\033[0m\n");
|
|
||||||
|
|
||||||
|
// 绘制进度条
|
||||||
|
printf("\r%s[", color);
|
||||||
|
for (int i = 0; i < 50; i++)
|
||||||
|
printf(i < percent / 2 ? "█" : " ");
|
||||||
|
printf("] %d%%\033[0m", percent);
|
||||||
|
fflush(stdout); // 强制刷新输出
|
||||||
|
}
|
||||||
|
|
||||||
printf("\n-----COLOR-----\n");
|
int main() {
|
||||||
printf("\033[30m\\033[30m\033[0m - \033[90m\\033[90m\033[0m\n");
|
for (int i = 0; i <= 100; i++) {
|
||||||
printf("\033[31m\\033[31m\033[0m - \033[91m\\033[91m\033[0m\n");
|
update_progress(i);
|
||||||
printf("\033[32m\\033[32m\033[0m - \033[92m\\033[92m\033[0m\n");
|
usleep(50000);
|
||||||
printf("\033[33m\\033[33m\033[0m - \033[93m\\033[93m\033[0m\n");
|
}
|
||||||
printf("\033[34m\\033[34m\033[0m - \033[94m\\033[94m\033[0m\n");
|
putchar('\n');
|
||||||
printf("\033[35m\\033[35m\033[0m - \033[95m\\033[95m\033[0m\n");
|
|
||||||
printf("\033[36m\\033[36m\033[0m - \033[96m\\033[96m\033[0m\n");
|
|
||||||
printf("\033[37m\\033[37m\033[0m - \033[97m\\033[97m\033[0m\n");
|
|
||||||
printf("\033[38;2;112;223;234m\\033[38;2;112;223;234m\033[0m\n");
|
|
||||||
|
|
||||||
printf("\033[40m\\033[40m\033[0m - \033[100m\\033[100m\033[0m\n");
|
|
||||||
printf("\033[41m\\033[41m\033[0m - \033[101m\\033[101m\033[0m\n");
|
|
||||||
printf("\033[42m\\033[42m\033[0m - \033[102m\\033[102m\033[0m\n");
|
|
||||||
printf("\033[43m\\033[43m\033[0m - \033[103m\\033[103m\033[0m\n");
|
|
||||||
printf("\033[44m\\033[44m\033[0m - \033[104m\\033[104m\033[0m\n");
|
|
||||||
printf("\033[45m\\033[45m\033[0m - \033[105m\\033[105m\033[0m\n");
|
|
||||||
printf("\033[46m\\033[46m\033[0m - \033[106m\\033[106m\033[0m\n");
|
|
||||||
printf("\033[47m\\033[47m\033[0m - \033[107m\\033[107m\033[0m\n");
|
|
||||||
printf("\033[48;2;112;223;234m\\033[48;2;112;223;234m\033[0m\n");
|
|
||||||
|
|
||||||
printf("\033[0m\n");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Loading…
x
Reference in New Issue
Block a user