連載
» 2014年10月17日 11時00分 公開

完全マスター! 組み込みC言語プログラミング(12):【問題11】文字列の長さと文字種類の判別 (3/4)

[横田一弘 埼玉県立新座総合技術高等学校 教諭,MONOist]

文字種別の判定

 前回、文字cが英小文字であるか判定するには、

c >= 'a' && c <= 'z'

 のように書けると説明しました。つまり英小文字はaからzまでのいずれかの文字というわけです。

 しかし、C言語には文字種別を判定する便利な関数が用意されていて、cが英小文字であるかは

islower(c)

 とも書けます。

 islowerは文字コードを隠蔽するので、今後はislowerを使ったほうがよいでしょう。

 islowerのように文字種別を判定する、名前がisで始まる関数は、Cの標準関数でいくつか用意されていて、これらの関数は引数cが関数で規定する値に限り、0以外の値(真)を返します。

文字種別を判定する標準関数
関数 機能
int isalnum(int c); cは英字または数字である。
int isalpha(int c); cは英字である。
int iscntrl(int c); cが制御文字である。
int isdigit(int c); cが数字である。
int isgraph(int c); cがスペースを除く表示可能文字である。
int islower(int c); cが英小文字である。
int isprint(int c); cが表示可能文字(スペースを含む)である。
int isspace(int c); cが白類文字(スペース、タブ、改行など)である。
int isupper(int c); cが英大文字である。
int isxdigit(int c); cが16進文字(数字またはaからf、またはAからF)である。

 これらの関数を使うときには、ctype.hをインクルードしなければなりません。

 ちなみに、ctype.hには文字の変換関数も用意されていて、英小文字のcを英大文字に変換する

c = c - 'a' + 'A';

 は、

c = toupper(c);

 とも書けます。

Copyright © ITmedia, Inc. All Rights Reserved.