IT

printf의 일부 텍스트를 녹색과 빨간색으로 표시

itgroup 2023. 6. 12. 21:18
반응형

printf의 일부 텍스트를 녹색과 빨간색으로 표시

리눅스 gcc 4.4.1

저는 다음과 같은 fprintf 문을 가지고 있으며 OK는 녹색, FAIL은 빨간색으로 하고 싶습니다.이것이 가능합니까?

if(devh == -1)
{
    fprintf(stderr, "Device [ FAILED ]\n");
}
else
{
    fprintf(stderr, "Device [ OK ]\n");
}

제안해 주셔서 감사합니다.

저는 터미널 출력에 색상을 추가하기 위해 다음 매크로를 사용합니다.

#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 */

...그리고 다음과 같이 사용합니다.

printf( GREEN "Here is some text\n" RESET );

색상이 지정된 grep의 사용 예?

그리고 당신의 예를 들어보면,

if(devh == -1)
{
    fprintf(stderr, "Device [ " RED "FAILED" RESET " ]\n");
}
else
{
    fprintf(stderr, "Device [ " GREEN "OK" RESET " ]\n");
}

아마도 단말기를 처리하려면 ncurs와 같은 라이브러리를 사용해야 할 것입니다.

또는 Linux에서 다음과 같은 일부 콘솔 이스케이프 시퀀스를 사용할 수 있습니다.

printf ("\033[32;1m OK \033[0m\n");

(이 경우 32는 녹색을 나타냄), 그러나 휴대용이거나 우아하지 않습니다.

언급URL : https://stackoverflow.com/questions/1961209/making-some-text-in-printf-appear-in-green-and-red

반응형