c언어에서 색깔있는 글씨출력을 할방법은 없나요..

NamSa의 이미지

vi 스크립트 비슷하게 구현해보려 하는데 ..

라인번호의 노란색.. 글씨가 탐나네요..

노란색으로 출력하는 방법에 대해서 알려주세요

c언어 자체로 안되면..

펄이나 쉘스크립으로 만들어서 ..

불러올방법 이라도 가르쳐 주세요~

펄이랑 쉘스크립트로 짜는 법도 알려 주셧으면 좋켓어요~~

여기 저기를 뒤져봐도 나와 있는 곳이 없네요 ..

noullove의 이미지

ANSI 코드를 사용하던가, 아님 curses 라이브러리를 사용하던가 하면 됩니다.

^^;;;

illuza의 이미지

이런 식으로 하시면 붉게 'Amazing kiss'라고 터미널로 출력이 됩니다.


#include <iostream>

using std::cout;

static char *__tty_color[] = {
		"\033[0;40;30m",		 /* 0	black on black */
		"\033[0;40;31m",		 /* 1	red */
		"\033[0;40;32m",		 /* 2	green */
		"\033[0;40;33m",		 /* 3	brown */
		"\033[0;40;34m",		 /* 4	blue */
		"\033[0;40;35m",		 /* 5	magenta */
		"\033[0;40;36m",		 /* 6	cyan */
		"\033[0;40;37m",		 /* 7	light gray */
		"\033[1;40;30m",		 /* 0	gray */
		"\033[1;40;31m",		 /* 1	brightred */
		"\033[1;40;32m",		 /* 2	brightgreen */
		"\033[1;40;33m",		 /* 3	yellow */
		"\033[1;40;34m",		 /* 4	brightblue */
		"\033[1;40;35m",		 /* 5	brighmagenta */
		"\033[1;40;36m",		 /* 6	brightcyan */
		"\033[1;40;37m",		 /* 7	white */
};

int main()
{
  cout << __tty_color[1] << "Amazing kiss\n" << __tty_color[7] << '\n';

  return 0;
}

i_wish_awk_sed_perl의 이미지

혹시 위의 코드 C 버전은 없는지요? ^^

언제쯤 정규표현식을 정복할 수 있을까? ㅡㅡ;

맹고이의 이미지

i_wish_awk_sed_perl wrote:
혹시 위의 코드 C 버전은 없는지요? ^^

C 버전이라고 뭐 다를 게 있나요... 출력함수만 바꾸면 됩니다.

NamSa의 이미지

위의 코드는 C가 아닌가 요 ㅠ,.ㅜ

쉘스크립트 같지도 않고 펄같지도 않은데 ~

pynoos의 이미지

nan1004au wrote:
위의 코드는 C가 아닌가 요 ㅠ,.ㅜ

쉘스크립트 같지도 않고 펄같지도 않은데 ~

C++ ....

lunarainbow의 이미지

illuza wrote:
이런 식으로 하시면 붉게 'Amazing kiss'라고 터미널로 출력이 됩니다.


#include <iostream>

using std::cout;

static char *__tty_color[] = {
		"\033[0;40;30m",		 /* 0	black on black */
		"\033[0;40;31m",		 /* 1	red */
		"\033[0;40;32m",		 /* 2	green */
		"\033[0;40;33m",		 /* 3	brown */
		"\033[0;40;34m",		 /* 4	blue */
		"\033[0;40;35m",		 /* 5	magenta */
		"\033[0;40;36m",		 /* 6	cyan */
		"\033[0;40;37m",		 /* 7	light gray */
		"\033[1;40;30m",		 /* 0	gray */
		"\033[1;40;31m",		 /* 1	brightred */
		"\033[1;40;32m",		 /* 2	brightgreen */
		"\033[1;40;33m",		 /* 3	yellow */
		"\033[1;40;34m",		 /* 4	brightblue */
		"\033[1;40;35m",		 /* 5	brighmagenta */
		"\033[1;40;36m",		 /* 6	brightcyan */
		"\033[1;40;37m",		 /* 7	white */
};

int main()
{
  cout << __tty_color[1] << "Amazing kiss\n" << __tty_color[7] << '\n';

  return 0;
}

좋은 정보 하나 얻어 가는군요. 감사합니다. :D

cdpark의 이미지

illuza wrote:
이런 식으로 하시면 붉게 'Amazing kiss'라고 터미널로 출력이 됩니다.

이런 식으로 프로그래밍하면 호환성이 떨어집니다. *nix 프로그래머에겐 호환성이 생명입니다!

merely_c의 이미지

#include <stdio.h>

unsigned char *LOGO[] = {
"TEST   SYSTEM",
};

static char *__tty_color[] = {
      "\033[0;40;30m",       /* 0   black on black */
      "\033[0;40;31m",       /* 1   red */
      "\033[0;40;32m",       /* 2   green */
      "\033[0;40;33m",       /* 3   brown */
      "\033[0;40;34m",       /* 4   blue */
      "\033[0;40;35m",       /* 5   magenta */
      "\033[0;40;36m",       /* 6   cyan */
      "\033[0;40;37m",       /* 7   light gray */
      "\033[1;40;30m",       /* 0   gray */
      "\033[1;40;31m",       /* 1   brightred */
      "\033[1;40;32m",       /* 2   brightgreen */
      "\033[1;40;33m",       /* 3   yellow */
      "\033[1;40;34m",       /* 4   brightblue */
      "\033[1;40;35m",       /* 5   brighmagenta */
      "\033[1;40;36m",       /* 6   brightcyan */
      "\033[1;40;37m",       /* 7   white */
};
int main(void)
{
   int i;
   printf("\n");
   for(i=0; LOGO[i]!= NULL; i++)
      printf("\n%s[%d]",LOGO[i],i);
   printf("\n");
   return 0;
}



위의 코드에서 tty_color 을 호출하지도 사용하지도 않았는데 다음과 같은 결과가 나옵니다.

TEST   SYSTEM[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]


0 번은 검은색 부터 16 번은 하얀색 까지..각각 색깔별로 나오네요...
tty_color 는 사용한적이 없는데 어케 된거 일까요? 궁금합니다.
아울러서 호환성이 떨어진다는 말은 무슨말인가요?
ANSI color 이므로 ANSI 를 지원하는 시스템에서는 다 되는거 아닌가요?

정보공유는 자신감의 표현입니다

Necromancer의 이미지

원래 C 표준라이브러리에는 색갈있는 글자 출력 기능은 없습니다.

저런건 터미널을 직접 제어하는 방법으로 해야 하는데, 그것들은
특별히 정해진 표준이 없다는게 문제죠. ncurses 라이브러리도
C 표준 라이브러리에는 들어가지도 않고요.

vi 처음 만들 당시 제작자들은 여러가지 터미널이 난무해서 이거 드라이버
만드느라고 고생했다고 하더군요.

Written By the Black Knight of Destruction

cdpark의 이미지

merely_c wrote:
tty_color 는 사용한적이 없는데 어케 된거 일까요? 궁금합니다.
아울러서 호환성이 떨어진다는 말은 무슨말인가요?
ANSI color 이므로 ANSI 를 지원하는 시스템에서는 다 되는거 아닌가요?

LOGO[0] 만 쓸 수 있는데 LOGO[1] 이상을 쓰니 다른 메모리 영역을 침범하게 된 겁니다. 우연히 LOGO[1]의 주소가 tty_color[0]의 주소와 같은 값이 되었을 뿐입니다. :evil:

마잇의 이미지

터미널에 컬러 출력하는 건 사용하시는 언어하고는 전혀 관계 없습니다.

당신이 무엇을 출력하든 사용자가 보는 결과는 사용자가 쓰는 터미널에 달려있지.

컬러를 찍으실 것이면 컬러를 제대로 지원하는 - 256 컬러 이상 - 터미널 클라이언트에 대해서 실험을 하세요.

C
C++
python
java
ruby
...

아무 언어도 관계 없습니다.

터미널에 컬러 나오게 하는 건 따로 표준 규약이 있어 표준 출력으로 그냥 규약에 맞게 쏘면 돼. 나도 깊게 몰라 알아서 찾으세요.

터미널에서 특수하게 생각하는 일련의 코드가 있습니다. 이걸로 감싸서 문자열을 출력하면 그것을 이해하는 터미널은 적당한 컬러로 바꿔서 출력을 해줍니다.

escape color code 같은 검색어로 시도를 해보세요.

반말 너무 많이 써서 수정 함


--
마잇

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.