C言語で入力文字が英字・数字・特殊文字のいずれかを判定する方法
このセクションでは、C言語において、入力された1文字が英字(アルファベット)・数字・特殊文字のどれに該当するかを判定する方法を解説します。
英字は「A〜Z」および「a〜z」の範囲、数字は「0〜9」の範囲に含まれます。そして、これら以外のすべての文字が特殊文字として分類されます。つまり、この基準に基づいて条件分岐を行えば、入力された文字の種類を簡単に判別できるのです。
判定のロジック
文字の種類を判定する手順は以下の通りです。
- 文字コードの比較により、大文字(A〜Z)または小文字(a〜z)の範囲内であれば → 英字
- '0' から '9' の範囲内であれば → 数字
- いずれの条件にも該当しなければ → 特殊文字
C言語では char 型の値は内部的に ASCII コードとして扱われるため、「>=」や「<=」といった比較演算子を使って文字の範囲を直接判定できます。
サンプルコード
#include <stdio.h>
#include <conio.h>
main() {
char ch;
printf("Enter a character: ");
scanf("%c", &ch);
if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
printf("This is an alphabet");
else if(ch >= '0' && ch <= '9')
printf("This is a number");
else
printf("This is a special character");
}
プログラムのポイント
scanf("%c", &ch)によって、キーボードから入力された1文字を読み込みます。- 最初の if 文で、大文字・小文字どちらの英字であるかを論理 OR 演算子(||)でまとめて判定しています。
- 英字でも数字でもない場合は、else ブロックで特殊文字として処理されます。
実行結果
■ 大文字の英字を入力した場合:
Enter a character: F This is an alphabet
■ 小文字の英字を入力した場合:
Enter a character: r This is an alphabet
■ 数字を入力した場合:
Enter a character: 7 This is a number
■ 特殊文字を入力した場合:
Enter a character: # This is a special character
補足:標準ライブラリ関数を使う方法
上記のような手動での範囲比較以外にも、<ctype.h> ヘッダーに用意されている標準ライブラリ関数を利用すると、より簡潔に記述できます。
isalpha(ch)… 英字かどうかを判定isdigit(ch)… 数字かどうかを判定
これらの関数は移植性も高く、実務のコードではこちらを使用するのが一般的です。ただし、文字コードの仕組みを理解する練習としては、範囲比較による実装も非常に有益です。
-
JavaScriptで入力値が数字か文字かを判定する方法【isNaN()関数の使い方】
入力された値が数字か文字(数値以外)かを判定するには、JavaScriptのisNaN()関数を使用します。この関数は、値がNaN(Not a Number:非数)である場合にtrueを返します。この特性を利用することで、ユーザーが入力した値が数値かどうかを簡単にチェックできます。 isNaN()関数とは isNaN()は「is Not a Number」の略称です。引数として渡された値が数値として解釈できない場合にtrueを、数値として解釈できる場合はfalseを返します。これにより、「入力内容が数字かどうか」をシンプルに判定できるのが特徴です。 サンプルコード 以下のコードでは、フォームの
-
Swiftで文字列に特殊文字が含まれているか判定する2つの方法
Swiftで文字列に特殊文字が含まれているかどうかを確認したい場合、if文やswitch文による条件分岐でも実現できますが、その場合は膨大な条件式を記述する必要があり、コーディングにも実行速度にも大きな負担となってしまいます。そこで本記事では、正規表現を使う方法と、Swift標準のCharacterSetを活用する方法の2通りを、具体的なコード例とともにわかりやすく解説します。 方法1:正規表現を使って判定する まずはString型のextensionを作成し、特殊文字の有無を判定するプロパティを追加しましょう。 extension String { var containsSpeci