可通过以下两种方法解决:
方法1. 用windows api. 如下代码输出123(高亮绿色前景白色背景)456(高亮黄色前景白色背景)在同一行。
#include <stdio.h>
#include <windows.h>
int main(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | BACKGROUND_INTENSITY| FOREGROUND_GREEN |BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
printf("123");
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY| BACKGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN |
BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
printf("456");
getchar();
return 0;
}
这里FOREGROUND_GREEN可以换成1-255的数字,表示不同配色。
方法2, 使用ansi颜色码。
两步:
I. 修改c:\windows\system32\CONFIG.NT文件,在最后添加一行:
device=%SystemRoot%\system32\ansi.sys
II. 然后c程序里用ansi颜色码,控制输出。 例如,输出一个绿色的123和一个黄色的456:
printf("\033[32m123\033[33m456\n");
#include <stdio.h>
#include <windows.h>
int main(){
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | BACKGROUND_INTENSITY| FOREGROUND_GREEN |BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
printf("123");
SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY| BACKGROUND_INTENSITY| FOREGROUND_RED | FOREGROUND_GREEN | BACKGROUND_RED|BACKGROUND_GREEN|BACKGROUND_BLUE);
printf("456");
getchar();
return 0;
}
这里FOREGROUND_GREEN可以换成1-255的数字,表示不同配色。
方法2, 使用ansi颜色码。
两步:
I. 修改c:\windows\system32\CONFIG.NT文件,在最后添加一行:
device=%SystemRoot%\system32\ansi.sys
II. 然后c程序里用ansi颜色码,控制输出。 例如,输出一个绿色的123和一个黄色的456:
printf("\033[32m123\033[33m456\n");
#include<conio.h>
main()
{
textcolor(RED);
cprintf("this is adsjskldfjlsd");
textcolor(GREEN);
cprintf("this is adsjskldfjlsd");
}
如果你要这样干的话,那就要学C语言的图形编程,常用C的图形库有OpenGL,SDL什么的,turbo c 上倒是有一个graphics 可以在命令行那儿画园划线什么的,不过那个已经是DOS时代的事了,现在没什么人用了
呃...OGL倒是会用,不过我想要一个命令行的效果=w=...所以真的没办法了么...?貌似TC里的textcolor+cprintf可以用,但是TC的编译器总是让人莫名其妙...貌似标准不一样?
那我就不清楚了,话说你在命令行下写颜色字是准备干嘛呢?
?
使用TC2.0编程。