[C/C++] C printf 문자열에 색 입히기

pikamon·2022년 7월 24일
0

C/C++

목록 보기
5/9

printf 사용 시 출력되는 문자열에 색상을 입힐 수 있다. printf로 로그를 출력할 때 유용하게 쓸 수 있다.

ANSI Escape Sequence를 사용하는데, 외우기가 어려워서 글로 정리하였다.


1. 색상 적용하기

1. 색상 적용

아래의 방법으로 적용할 수 있다.

방법:
printf("\033[색상코드;색상코드m안녕하세요\033[0m");

  • 색상 적용 : \033[색상코드;색상코드m
  • 색상 해제 : \033[0m

예시 코드를 보자.

#include <stdio.h>

int main(void)
{
	printf("\033[0;30m안녕하세요\033[색상코드;색상코드m\n");
}

아래의 방법으로도 동일하게 적용할 수 있다.

#include <stdio.h>

int main(void)
{
	printf("\033[0;30m안녕하세요\033[0m\n");
	printf("\033[0;31m안녕하세요\033[0m\n");
	printf("\033[0;32m안녕하세요\033[0m\n");
	printf("\033[0;33m안녕하세요\033[0m\n");
	printf("\033[0;34m안녕하세요\033[0m\n");
	printf("\033[0;35m안녕하세요\033[0m\n");
	printf("\033[0;36m안녕하세요\033[0m\n");

	return 0;
}

실행하면 아래와 같이 출력된다.

글자색이 입혀진 것을 볼 수 있다.

2. 코드 예쁘게 정리

\033[0;30m 라는 문자열이 잘 외워지지 않는다면 macro로 정의하여 사용하는 것을 추천한다.

위에 작성한 코드를 아래와 같이 고쳐보자.

#include <stdio.h>

#define COLOR_NONE		"\033[0m"
#define COLOR_BLACK		"\033[0;30m"
#define COLOR_RED		"\033[0;31m"
#define COLOR_GREEN		"\033[0;32m"
#define COLOR_BROWN		"\033[0;33m"
#define COLOR_BLUE		"\033[0;34m"
#define COLOR_PURPLE	"\033[0;35m"
#define COLOR_CYAN		"\033[0;36m"

#define log(x, str) printf(x str COLOR_NONE "\n");

int main(void)
{
	log(COLOR_BLACK,  "안녕하세요");
	log(COLOR_RED,    "안녕하세요");
	log(COLOR_GREEN,  "안녕하세요");
	log(COLOR_BROWN,  "안녕하세요");
	log(COLOR_BLUE,   "안녕하세요");
	log(COLOR_PURPLE, "안녕하세요");
	log(COLOR_CYAN,   "안녕하세요");

	return 0;
}

실행하면 위와 동일하게 출력된다.

주의할 점은 색상 적용 후 \033[0m을 이용해 꼭 색상 적용을 해제해주어야 한다. 안그러면 적용된 색상이 계속 남아있어서 후에 호출되는 printf에도 동일한 색상이 그대로 적용되어버린다.

2. 색상 종류

글자색 뿐만 아니라 배경색도 적용할 수 있으며, 위 예제에서 사용한 색상 외에도 더 다양한 색상을 적용할 수 있다고 한다.

https://en.wikipedia.org/wiki/ANSI_escape_code#Colors

필요 시 참고하면 될 것 같다.

profile
개발자입니당 *^^* 깃허브 https://github.com/pikamonvvs

0개의 댓글