LoginSignup
2

More than 3 years have passed since last update.

C言語で色付きログを出力したくなった時のために

Posted at

コンソールに引き籠もっている時に、色気が欲しくなった場合に備えてgithubにコードをあげておく。

何ができるのか

console(ターミナルソフト)で色付きのログを出すことができる。(ただし、16色まで)
mac,cygwinで動作確認済み。多分linuxでも動くはず。

とりあえず、使い方

git hubに上げてあるので以下で取得

$ git clone https://github.com/tksmiura/color_log

使うのはcolor_log.hとcolor_log.cのみ、
適当に自分のプロジェクトに取り込んで下さい。
サンプルのビルド方法は、

$ gcc -o test test.c
$ gcc -o test2 test2.c color_log.c

色をつけるエスケープシーケンスをマクロ(文字列)にしているので、色付きの出力はこんな感じでできます。

#inclue "color_log.h"

    printf(COLOR_FG_LRED "COLOR_FG_LRED" COLOR_RESET "\n");
...

testを実行すると色の一覧が出ます。
test.png

関数とマクロを使って以下のようにすることも可能

    log_printf(LOG_LEVEL_INFO, "[this is info]");

    WARN_LOG("WARN_LOG log.....\n");

こちらは、

  • コンソール以外では、エスケープシーケンスが出ないように制御(isatty())
  • コンソールの場合、コンソールの幅でカットすることで1行以上にならないようにする(ASCII文字以外非対応、ioctl )

ということをやっています。

test2がサンプルです。| catでパイプすると色が出ません。(ただし、emacsのシェルでは上手く動作せず、、、orz)

test2.png

参考

https://www.serendip.ws/archives/4635
https://www.mm2d.net/main/prog/c/console-02.html
https://qiita.com/hidetzu/items/2978f63e6d9b1848d8fe

課題

できればemacsに引き籠もって一歩も外に出たくない

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2