前段时间做了个用于测试的控制台程序,要在控制台上输出日志,以便分析测试程序执行和测试结果是否正确。黑底白字的控制台程序看起来很单调,也不太容易看出是否有问题。于是输出时加了一点点代码,使每一步的执行是否正确都很清晰,出错时也一眼就能看出来了。
这个颜色是受linux启动界面的启发。
控制台程序是怎么输出的有颜色的字符串,现在分享一下:
/*
* 在控制台上输出指定颜色的字符串
* 第一个参数color表示颜色
*/
void printfc(unsigned short color, char* format,...)
{
unsigned short oldcolor;
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
va_list argList;
CONSOLE_SCREEN_BUFFER_INFO bInfo;
GetConsoleScreenBufferInfo(hCon, &bInfo );
oldcolor = bInfo.wAttributes;
SetConsoleTextAttribute(hCon,color);
va_start( argList, format );
vprintf( format,argList);
va_end( argList );
SetConsoleTextAttribute(hCon,oldcolor);
}
就是这么一个函数就够了,比如:
printfc(10,"GREEN");
就是显示一个绿色的字符串"GREEN"。
另外,system("color 0a");也可以让控制台变成绿色字符,不过是所有的输出全都变成绿色,感兴趣也可以试试。