★文字と文字列(文字4)★


前回は「文字」の範囲チェックについて説明しました。

今回は、チェック用の命令(関数)について説明します。


まずは新しい「ヘッダファイル」を紹介します。

「ヘッダファイル」については、以前説明したことがあります。

ここで紹介するのは、ctype.hというヘッダファイルです。

これを #include することによって、文字のチェックなどが出来る命令(関数)が使えるようになります。

それでは、サンプルプログラムを作ってみましょう。


前回、アルファベットの大文字かどうかを調べるプログラムを作りました。

それと同じプログラムを新しい命令(関数)で作り変えてみます。

<sample program 080-01>

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

int main(void)
{
    char data;

    scanf("%c", &data);

    if (isupper(data)) {
        printf("Uppercase\n");
    }

    return 0;
}

<実行結果>

D
Uppercase
続行するには何かキーを押してください・・・
d
続行するには何かキーを押してください・・・

if文の条件の中に書いてある「isupper」がアルファベットの大文字かどうかを調べる命令(関数)です。

isupper に「文字」を渡すと、「アルファベットの大文字」であれば成立、それ以外は不成立と判断されます。

試しに「isupper」の結果をprintfで表示してみましょう。

<sample program 080-02>

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

int main(void)
{
    char data;

    scanf("%c", &data);

    if (isupper(data)) {
        printf("Uppercase\n");
    }

    printf("result = %d\n", isupper(data));

    return 0;
}

<実行結果>

D
Uppercase
result = 1
続行するには何かキーを押してください・・・
d
result = 0
続行するには何かキーを押してください・・・

if文は「0以外」であれば成立し、「0」であれば不成立です。

isupper は「アルファベットの大文字」であれば1を、それ以外は0を返してきますので、結果をそのままif文に入れて判断しています。


ちなみに、アルファベットの「小文字」かどうかは「islower」で判断出来ます。

プログラムについては、ほぼ同じようなプログラムが続くことになりますので、使える命令(関数)を書いておきます。

※上のプログラムの「isupper」の箇所を別の名前に変えるだけで良いです。


文字の種類の判定を行う命令(関数)一覧

isalpha調べる文字がアルファベットであれば成立
islower調べる文字がアルファベット小文字であれば成立
isupper調べる文字がアルファベット大文字であれば成立
isalnum調べる文字がアルファベットか数字であれば成立
isdigit調べる文字が数字であれば成立
isxdigit調べる文字が16進数の数字(0から9、AからF、aからf)であれば成立
isblank調べる文字が空白か水平タブであれば成立
isspace調べる文字が空白、水平タブ、改行、垂直タブ、書式送り、復帰であれば成立
ispunct調べる文字が区切り文字(文字コード表の33から47、58から64、91から96、123から125)であれば成立
iscntrl調べる文字が制御文字(文字コード表の0から31までと127)であれば成立
isprint調べる文字が表示文字(文字コード表の32から126)であれば成立
isgraph調べる文字が空白を除く表示文字(文字コード表の32から126)であれば成立

実際に上のプログラムの「isupper」の箇所を書き換えて、色々と試してください。

「文字」の範囲をチェックする事については以上で終わりです。


もう一種類だけ「文字」に関する命令(関数)を書いておきます。

これも前に作ったプログラムの書き換えになりますが、「大文字を小文字に変換する」命令(関数)です。

<sample program 080-03>

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

int main(void)
{
    char data;

    scanf("%c", &data);

    printf("%c\n", tolower(data));
    
    return 0;
}

<実行結果>

D
d
続行するには何かキーを押してください・・・
d
d
続行するには何かキーを押してください・・・
;
;
続行するには何かキーを押してください・・・

アルファベットの大文字を入力した時だけ、小文字に変換して表示されています。

逆に「toupper」を使うと小文字を大文字に変換してくれます。


次回から「文字列」について説明しますが、これまでの「文字」の知識も必要ですので、しっかりと理解してください。


次へ

戻る

目次へ