C에서 console에 색깔(color) 넣어 출력하기(output)

By | 2009/10/03

  운영체제론 숙제로 자신의 이름을 출력하는 나왔습니다. ‘참 쉽죠?’이기는 하지만 그것이 pintos를 돌리는 bochs 위라는 점이 ‘C 언어 배우기’와 같은 수업 첫 번째 수업과 다른 점이었습니다.

  어떻든 교수님은 화려한 것을 좋아한다고 하셨고 거기에 한 학우가 저에게 ‘색깔을 넣는 것이 어떻겠느냐?’라는 말을 하였습니다.

  그래서 관련 자료를 찾아보았습니다. 그렇게 해서 발견한 문서가 있습니다.

Consider the following program:

    int main() {
    printf(“%c[1;31mHello\n”,27); /* Prints “Hello\n” in RED (ANSI) */
    return 0;
    }

출처 : Color Output with Printf

  실제로 저렇게 하면 Hello가 빨간색으로 되는지 확인하였습니다.

c2

  정말로 빨간색으로 출력되는군요.^^ 하지만 그 뒤에도 계속 그렇게 되네요.OTL.. 프로그램이 끝나서 쉘 프로세스로 돌아왔음에도 그 영향이 남아있다는 점이 놀랍습니다.

  혹시 이것이 putty의 문제인가 싶어 Gnome Shell에서도 확인해보았습니다.

c7

  역시 같은 모습입니다.

  그럼 다른 프로세스를 돌리면 원래대로 돌아오는가 싶어 해보았습니다.

c3

  echo를 하였음에도 그대로 진행되네요. 그런데 왜 ls는 제대로 출력하는지 모르겠습니다.

  그럼 다른 색깔이나 다른 효과는 어떻게 하면 되는가? 여기에 대해서는 다음 문서를 참조하시면 됩니다.

Microsoft DOS ansi.sys command

  Microsoft DOS입니다. 하지만 Visual Studio 2008에서 컴파일 한 cmd에서는 제대로 동작하지 않습니다.

c4

  아마 컴파일 시 DOS가 아니라 Win32로 하였기 때문이 아닌가 싶습니다. 여기에 대해서는 잘 모르겠네요.^^;;

  지금까지 C에서 console에 색깔 등의 효과를 내는 방법 소개였습니다.

참조

www.computerhope.com_ansisys.pdf

2 thoughts on “C에서 console에 색깔(color) 넣어 출력하기(output)

  1. nvec

    ls에서 색이 출력이 안된건
    ls가 자체적으로 콘솔출력시 색을 통제해서 그런것 아닐까요?
    ls 후에 다시 원래대로 돌아온걸 보면 그런것 같군요.

    Reply
    1. NoSyu

      저 역시 그렇지 않을까 추측하고 있습니다.
      ls에서 파란색이 사용되는 것으로 보아 아마 디폴트로 설정하여 찍은 후 해당 부분을 파란색으로 하는 것이 아닌가 싶습니다.
      ls 소스를 보면 명확하겠지만 일단 훗날로 미뤄야겠습니다.OTL…

      Reply

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.