第48回
特殊な画面制御~GCCの画面制御ライブラリ

GCCの特殊なライブラリ

UNIX系OSのC処理系であるGCCでは、画面制御とキーボード入力の機能が「ncursesライブラリ」として用意されており、curses.hを取り込んで使用します。

ncursesライブラリ

ncursesライブラリに収録されている関数群は、カーソルキーでカーソルを移動させたり、文字に色を付けたり、画面上の文字列を上下左右にスクロールさせるなど、ハードウェアとOSに依存した特別な機能を持っています。

これを利用するには、以下のようにソースの冒頭でヘッダファイル“curses.h”を取り込み、GCCでコンパイルするときにコマンドラインオプションとして“-l”(小文字のL)を指定して、オブジェクトファイルにライブラリ“ncurses”をリンクする必要があります。
#include <curses.h>

たとえばabc.cというソースからabcという実行形式ファイルを生成するなら、以下のようなコマンドラインとなります。
gcc -oabc -lncurses abc.c

端末の初期化とリセット

端末とは、コンピュータのキーボードとディスプレイです。これらをncursesライブラリの関数で扱うためには、端末の初期化を行わなければなりません。

初期化にはinitscr関数を使います。ncursesによる画面制御処理の前に、必ず1回だけ
initscr();
としてinitscr関数を実行しておきます。

こうして準備をした後、ncursesライブラリの画面制御関数を呼び出して処理を行い、最後にendwin関数を実行して端末をリセットし、標準入出力関数が使える状態に戻します。これも最後に1回だけ実行します。
endwin();

つまり、initscr関数の呼び出しからendwin関数を呼び出すまでの間だけ、ncursesによる画面制御関数が使えるということです。