Linux的GCC 4.4.1製作在printf的一些文字會出現在綠色和紅色
我有以下fprintf中的語句,我想有確定爲綠色,失敗爲紅色。這可能嗎?
if(devh == -1)
{
fprintf(stderr, "Device [ FAILED ]\n");
}
else
{
fprintf(stderr, "Device [ OK ]\n");
}
非常感謝您的任何建議,
Linux的GCC 4.4.1製作在printf的一些文字會出現在綠色和紅色
我有以下fprintf中的語句,我想有確定爲綠色,失敗爲紅色。這可能嗎?
if(devh == -1)
{
fprintf(stderr, "Device [ FAILED ]\n");
}
else
{
fprintf(stderr, "Device [ OK ]\n");
}
非常感謝您的任何建議,
你或許應該使用一些庫如的ncurses處理終端。
另外,在Linux下,你可以使用一些控制檯轉義序列,如:
printf ("\033[32;1m OK \033[0m\n");
(在這種情況下,32個代表綠色),但它既不便攜也不優雅。
我用來使用下面的宏爲終端輸出添加顏色。
#define RESET "\033[0m"
#define BLACK "\033[30m" /* Black */
#define RED "\033[31m" /* Red */
#define GREEN "\033[32m" /* Green */
#define YELLOW "\033[33m" /* Yellow */
#define BLUE "\033[34m" /* Blue */
#define MAGENTA "\033[35m" /* Magenta */
#define CYAN "\033[36m" /* Cyan */
#define WHITE "\033[37m" /* White */
#define BOLDBLACK "\033[1m\033[30m" /* Bold Black */
#define BOLDRED "\033[1m\033[31m" /* Bold Red */
#define BOLDGREEN "\033[1m\033[32m" /* Bold Green */
#define BOLDYELLOW "\033[1m\033[33m" /* Bold Yellow */
#define BOLDBLUE "\033[1m\033[34m" /* Bold Blue */
#define BOLDMAGENTA "\033[1m\033[35m" /* Bold Magenta */
#define BOLDCYAN "\033[1m\033[36m" /* Bold Cyan */
#define BOLDWHITE "\033[1m\033[37m" /* Bold White */
...並使用像使用Colored grep?
的
printf(GREEN "Here is some text\n" RESET);
例子,你比如
if(devh == -1)
{
fprintf(stderr, "Device [ " RED "FAILED" RESET " ]\n");
}
else
{
fprintf(stderr, "Device [ " GREEN "OK" RESET " ]\n");
}
謝謝你的傑出答案 – kapil 2015-09-20 17:19:18
肯定更好用的庫 - 硬連線終端轉義序列被不好,和它相關的問題是爲什麼詛咒圖書館被髮明的原因(或是原因的很大一部分)。 – 2009-12-25 20:29:29