isgraph関数は、指定された文字が表示できる文字であるかを調べます。ただし、スペースは含みません。従って、この関数の場合の表示できる文字とは、半角の英数字と記号です。

よく似た関数のisprint関数との相違は、isprint関数の場合はスペースを含むことだけです。

#include <ctype.h>
int isgraph(int c);

cは、チェックしたい文字を指定します。int型ですので注意してください。

戻り値として、引数の値が表示できる文字であれば0以外を、そうでなければ0を返します。

次の例題では、isgraph関数の引数を明示的にint型に型変換(キャスト)していますが、型変換を指定していない場合は自動的に変換されます。

プログラム 例

#include <stdio.h>
#include <ctype.h>

int main(void)
{
  int    loop_cnt;
  char   in_data;

  for (loop_cnt = 1; loop_cnt <= 5; ++loop_cnt) {
    printf('1文字入力してください ==> ');
    scanf('%c%*c', &in_data);

    /* in_dataの値が空白以外の見える文字だったら0以外が返る */
    if (isgraph((int)in_data) != 0) {
      printf('空白以外です\n');
    }
    else {
      printf('空白です\n');
    }
  }

  return 0;
}

例の実行結果

3回目はスペース、4回目はタブを入力しています。

$ ./isgraph.exe
1文字入力してください ==> a
空白以外です
1文字入力してください ==> 0
空白以外です
1文字入力してください ==>
空白です
1文字入力してください ==>
空白です
1文字入力してください ==> ?
空白以外です
$