[C言語] アルファベットが大文字か小文字か判定する方法を解説

C言語でアルファベットが大文字か小文字かを判定するには、標準ライブラリのctype.hを利用します。

このライブラリにはisupper()islower()という関数があり、それぞれ文字が大文字か小文字かを判定します。

例えば、isupper('A')は真を返し、islower('a')も真を返します。

これらの関数を使うことで、簡単に文字の大文字・小文字を判定することができます。

この記事でわかること
  • isupperとislower関数の使い方
  • 自作関数での大文字・小文字判定方法
  • 文字列内の大文字と小文字の数を数える方法
  • 文字列をすべて大文字または小文字に変換する方法
  • 標準関数と自作関数の使い分けのポイント

目次から探す

大文字か小文字かを判定する方法

C言語では、文字が大文字か小文字かを判定するための便利な関数が用意されています。

ここでは、標準ライブラリの関数と自作関数を使った判定方法について解説します。

isupper関数の使い方

isupper関数は、指定した文字が大文字であるかどうかを判定するための関数です。

この関数は、<ctype.h>ヘッダファイルに含まれています。

#include <stdio.h>
#include <ctype.h>
int main() {
    char ch = 'A'; // 判定する文字
    if (isupper(ch)) {
        printf("%c は大文字です。\n", ch);
    } else {
        printf("%c は大文字ではありません。\n", ch);
    }
    return 0;
}
A は大文字です。

この例では、文字'A'が大文字であるため、isupper関数は真を返し、「A は大文字です。」と出力されます。

islower関数の使い方

islower関数は、指定した文字が小文字であるかどうかを判定するための関数です。

この関数も、<ctype.h>ヘッダファイルに含まれています。

#include <stdio.h>
#include <ctype.h>
int main() {
    char ch = 'a'; // 判定する文字
    if (islower(ch)) {
        printf("%c は小文字です。\n", ch);
    } else {
        printf("%c は小文字ではありません。\n", ch);
    }
    return 0;
}
a は小文字です。

この例では、文字'a'が小文字であるため、islower関数は真を返し、「a は小文字です。」と出力されます。

自作関数での判定方法

標準ライブラリの関数を使わずに、自作関数で大文字と小文字を判定する方法もあります。

以下にその方法を示します。

大文字判定の自作関数

大文字を判定する自作関数は、文字のASCIIコードを利用して判定します。

#include <stdio.h>
int isUpperCase(char ch) {
    return (ch >= 'A' && ch <= 'Z');
}
int main() {
    char ch = 'B'; // 判定する文字
    if (isUpperCase(ch)) {
        printf("%c は大文字です。\n", ch);
    } else {
        printf("%c は大文字ではありません。\n", ch);
    }
    return 0;
}
B は大文字です。

この自作関数isUpperCaseは、文字が'A'から'Z'の範囲にあるかどうかをチェックします。

小文字判定の自作関数

小文字を判定する自作関数も、同様にASCIIコードを利用して判定します。

#include <stdio.h>
int isLowerCase(char ch) {
    return (ch >= 'a' && ch <= 'z');
}
int main() {
    char ch = 'b'; // 判定する文字
    if (isLowerCase(ch)) {
        printf("%c は小文字です。\n", ch);
    } else {
        printf("%c は小文字ではありません。\n", ch);
    }
    return 0;
}
b は小文字です。

この自作関数isLowerCaseは、文字が'a'から'z'の範囲にあるかどうかをチェックします。

応用例

C言語で文字の大文字・小文字を判定する方法を理解したところで、これを応用したいくつかの例を紹介します。

これらの例は、文字列操作において非常に役立ちます。

文字列内の大文字と小文字を数える

文字列内の大文字と小文字の数を数えるプログラムを作成します。

isupperislower関数を利用して、各文字を判定します。

#include <stdio.h>
#include <ctype.h>
int main() {
    char str[] = "Hello, World!"; // 判定する文字列
    int upperCount = 0;
    int lowerCount = 0;
    for (int i = 0; str[i] != '
#include <stdio.h>
#include <ctype.h>
int main() {
    char str[] = "Hello, World!"; // 判定する文字列
    int upperCount = 0;
    int lowerCount = 0;
    for (int i = 0; str[i] != '\0'; i++) {
        if (isupper(str[i])) {
            upperCount++;
        } else if (islower(str[i])) {
            lowerCount++;
        }
    }
    printf("大文字の数: %d\n", upperCount);
    printf("小文字の数: %d\n", lowerCount);
    return 0;
}
'; i++) { if (isupper(str[i])) { upperCount++; } else if (islower(str[i])) { lowerCount++; } } printf("大文字の数: %d\n", upperCount); printf("小文字の数: %d\n", lowerCount); return 0; }
大文字の数: 2
小文字の数: 8

このプログラムは、文字列"Hello, World!"内の大文字と小文字の数をそれぞれ数え、結果を出力します。

文字列をすべて大文字に変換する

文字列内のすべての小文字を大文字に変換するプログラムを作成します。

toupper関数を使用します。

#include <stdio.h>
#include <ctype.h>
int main() {
    char str[] = "Hello, World!"; // 変換する文字列
    for (int i = 0; str[i] != '
#include <stdio.h>
#include <ctype.h>
int main() {
    char str[] = "Hello, World!"; // 変換する文字列
    for (int i = 0; str[i] != '\0'; i++) {
        str[i] = toupper(str[i]);
    }
    printf("大文字に変換された文字列: %s\n", str);
    return 0;
}
'; i++) { str[i] = toupper(str[i]); } printf("大文字に変換された文字列: %s\n", str); return 0; }
大文字に変換された文字列: HELLO, WORLD!

このプログラムは、文字列"Hello, World!"をすべて大文字に変換し、結果を出力します。

文字列をすべて小文字に変換する

文字列内のすべての大文字を小文字に変換するプログラムを作成します。

tolower関数を使用します。

#include <stdio.h>
#include <ctype.h>
int main() {
    char str[] = "Hello, World!"; // 変換する文字列
    for (int i = 0; str[i] != '
#include <stdio.h>
#include <ctype.h>
int main() {
    char str[] = "Hello, World!"; // 変換する文字列
    for (int i = 0; str[i] != '\0'; i++) {
        str[i] = tolower(str[i]);
    }
    printf("小文字に変換された文字列: %s\n", str);
    return 0;
}
'; i++) { str[i] = tolower(str[i]); } printf("小文字に変換された文字列: %s\n", str); return 0; }
小文字に変換された文字列: hello, world!

このプログラムは、文字列"Hello, World!"をすべて小文字に変換し、結果を出力します。

よくある質問

isupperとislowerはどのヘッダファイルに含まれていますか?

isupperislowerは、どちらも<ctype.h>ヘッダファイルに含まれています。

このヘッダファイルには、文字の分類や変換を行うための関数が多数定義されています。

これらの関数を使用する際は、必ず#include <ctype.h>をプログラムの先頭に記述してください。

自作関数と標準関数のどちらを使うべきですか?

標準関数を使用することをお勧めします。

標準関数は、C言語のライブラリに含まれており、最適化されているため、信頼性と効率性が高いです。

また、コードの可読性も向上します。

ただし、特定の要件や学習目的で自作関数を使用することも有益です。

自作関数を使うことで、プログラミングの基礎を深く理解することができます。

まとめ

この記事では、C言語で文字が大文字か小文字かを判定する方法について解説しました。

標準関数であるisupperislowerの使い方、自作関数による判定方法、そしてそれらを応用した文字列操作の例を紹介しました。

これらの知識を活用して、文字列操作のスキルをさらに向上させてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • URLをコピーしました!
目次から探す