C言語入門講座。関数、サンプル集を参考にして、 C言語をマスターしよう。初心者から上級者まで。

文字の種類を判定する

2012.08.10

以下の関数は、それぞれ文字を判定する関数です。

すでに紹介済のものもありますが、このページにまとめておきます。
















































isalpha 英字の判定
isalnum 英数字の判定
iscntrl 制御文字の判定
isdigit 10進数字の判定
isxdigit 16進数字の判定
isgraph 表示できる文字(スペースは含まない)の判定
isprint 表示できる文字(スペースも含む)の判定
ispunct 表示できる文字(スペースと英数字は含まない)の判定
isspace 空白文字の判定
islower 英小文字の判定
isupper 英大文字の判定

#include <ctype.h>

int isalpha(int c);

int isalnum(int c);

int iscntrl(int c);

int isdigit(int c);

int isxdigit(int c);

int isgraph(int c);

int isprint(int c);

int ispunct(int c);

int isspace(int c);

int islower(int c);

int isupper(int c);

cは、チェックしたい文字を指定します。EOF(-1)も判定する可能性があるため、int型になっています。

戻り値として、引数の値が判定内容に合致すれば0以外を、合致しなければ0を返します。

プログラム 例

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

int main(void) {
  int i;
  int ch = '';
  char *msg_last = NULL;

  int (*is__[])(int) = {
    isalpha,
    isalnum,
    iscntrl,
    isdigit,
    isxdigit,
    isgraph,
    isprint,
    ispunct,
    isspace,
    islower,
    isupper,
    NULL
  };

  char *chk[] = {
    '英字',
    '英数字',
    '制御文字',
    '10進数字',
    '16進数字',
    '表示できる文字(スペースは含まない)',
    '表示できる文字(スペースも含む)',
    '表示できる文字(スペースと英数字は含まない)',
    '空白文字',
    '英小文字',
    '英大文字',
    NULL
  };

  ch = getch();

  i = 0;
  while(NULL != chk[i]) {
    //各種文字の判定
    if (is__[i](ch)) {
      msg_last = 'です。';
    }
    else {
      msg_last = 'ではありません。';
    }
    printf(''%c'は%s%sn', (char)ch, chk[i], msg_last);
    i++;
  }

  return 0;
}

例の実行結果(‘b’を押下した場合)

> is__.exe
'b'は英字です。
'b'は英数字です。
'b'は制御文字ではありません。
'b'は10進数字ではありません。
'b'は16進数字です。
'b'は表示できる文字(スペースは含まない)です。
'b'は表示できる文字(スペースも含む)です。
'b'は表示できる文字(スペースと英数字は含まない)ではありません。
'b'は空白文字ではありません。
'b'は英小文字です。
'b'は英大文字ではありません。

※Windows環境でのみ動作確認しております。LINUX環境などでは動作が異なる場合がありますので、その場合は環境に合わせてカスタマイズしてください。

Copyright © 2011 katsumi Handa All Rights Reserved.

関連記事