以下の関数は、それぞれ文字を判定する関数です。
すでに紹介済のものもありますが、このページにまとめておきます。
| 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.