Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】ctype.hの文字分析・変換関数で文字の種類を判定する方法

C言語では、「ctype.h」ヘッダーファイルに、入力された文字を解析・変換するための定義済み関数が多数用意されています。これらの関数を活用することで、「入力された文字が英字か数字か」「大文字か小文字か」といった判定を簡単に行うことができます。

文字分析関数

主な文字分析関数は以下の通りです。

関数判定内容
isalpha()英字(アルファベット)であるかどうか
isdigit()数字であるかどうか
isspace()空白・改行・タブであるかどうか
ispunct()記号(特殊文字)であるかどうか
islower()英小文字であるかどうか
isupper()英大文字であるかどうか
isalnum()英字または数字(英数字)であるかどうか

文字変換関数

英字の大文字・小文字を相互に変換するための関数は以下の通りです。

関数変換内容
tolower()英大文字を英小文字に変換する
toupper()英小文字を英大文字に変換する

サンプルプログラム

以下は、文字分析関数を使用して、キーボードから入力された1文字の種類を判定するCプログラムの例です。

#include <stdio.h>
#include <ctype.h>
int main(void){
    char character;
    printf("Press any key digit or alphabet\n");
    character = getchar();
    if (isalpha(character) > 0)
        printf("The character is a letter.");
    else
        if (isdigit(character) > 0)
            printf("The character is a digit.");
        else
            printf("The character is not alphanumeric.");
    return 0;
}

このプログラムの処理の流れは以下の通りです。

  1. getchar() でキーボードから1文字を読み込む。
  2. isalpha() で英字かどうかを判定し、真であれば「英字です」というメッセージを表示する。
  3. 英字でなければ isdigit() で数字かどうかを判定し、真であれば「数字です」と表示する。
  4. どちらにも該当しない場合は「英数字ではない」と表示する。

実行結果

上記のプログラムを実行すると、入力した文字に応じて以下のような結果が出力されます。

Run 1:
Press any key digit or alphabet
3
The character is a digit.

Run 2:
Press any key digit or alphabet
G
The character is a letter.

Run 3:
Press any key digit or alphabet
&
The character is not alphanumeric.
  • Run 1: 数字「3」を入力 → isdigit() が真を返し、「この文字は数字です」と判定される。
  • Run 2: 英字「G」を入力 → isalpha() が真を返し、「この文字は英字です」と判定される。
  • Run 3: 記号「&」を入力 → どちらの条件にも該当しないため、「この文字は英数字ではありません」と判定される。

なお、現在のC標準(C99以降)では main() 関数は int main(void) と宣言し、正常終了時に return 0; を返すことが推奨されています。また、これらの関数は引数として渡された文字の判定結果を真偽値(0以外の値/0)として返すため、if文と組み合わせて柔軟な条件分岐を記述できます。

  1. 円に内接する正十角形の面積を求めるC++プログラム

    この記事では、円の内部に内接する正十角形(デカゴン)の面積を求める方法について解説します。円の半径 r が与えられており、正十角形の一辺の長さを a とします。 円に内接する正十角形の場合、中心における隣り合う頂点同士がなす角(中心角)は 360° ÷ 10 = 36° となります。この性質を利用すると、一辺の長さ a は半径 r を用いて次のように表すことができます。 さらに、一辺の長さと中心角の関係から、円に内接する正十角形の面積は次の式で求められます。 サンプルコード 以下は C++ による実装例です。半径を受け取って面積を返す area() 関数を定義しています。半径が負の値の場

  2. 三角マッチ棒数を求めるC/C++プログラムの解説と実装例

    三角マッチ棒数とはマッチ棒を正三角形の形に並べて作った三角形のことを「三角マッチ棒数(Triangular Matchstick Number)」と呼びます。三角マッチ棒数とは、そのマッチ棒の三角形を作るために必要なマッチ棒の本数を指します。問題の概要この問題では、マッチ棒で作るピラミッドの段数 X が与えられます。そして、X 段のマッチ棒ピラミッドを構成するために必要なマッチ棒の最小総本数を出力するプログラムを作成するのが課題です。概念をより明確にするために、具体例を見てみましょう。入力: 7 出力: 84解法の考え方この問題は、三角数(Triangular Number)の拡張として考える