連載
【問題11】文字列の長さと文字種類の判別:完全マスター! 組み込みC言語プログラミング(12)(3/4 ページ)
C言語を使ったマイコン制御プログラムの“イロハ”を解説する本連載。複数条件を満たすパスワード確認プログラムを通じて、複数関数の使い方とフラグの立て方を学びます。
文字種別の判定
前回、文字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.