プログラミング初心者向けの練習問題の一つに対象の文字が全角、半角のどちらであるかを判定するプログラムの作成があります。
本記事では、前述のプログラムの作成方法について解説しています。
文字コードについて
入力された文字が全角、半角のどちらかを判別するプログラムを作成するためには、まず文字コードについて理解しておく必要があります。
文字コードとは
コンピュータ上ではあらゆるデータは0と1の組み合わせによって表現されます。
当然、文字や数字などの記号も0と1の組み合わせによって表現されており、それぞれの記号に対応付けられた値のことを文字コードと呼びます。
例として以下に文字コードの一つであるUTF-8において、半角文字とそれに対応する値の一覧を示します。
文字コード: 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B 0x2C 0x2D 0x2E 0x2F 記号: ! " # $ % & ' ( ) * + , - . / 文字コード: 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B 0x3C 0x3D 0x3E 0x3F 記号: 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 文字コード: 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4A 0x4B 0x4C 0x4D 0x4E 0x4F 記号: @ A B C D E F G H I J K L M N O 文字コード: 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5A 0x5B 0x5C 0x5D 0x5E 0x5F 記号: P Q R S T U V W X Y Z [ \ ] ^ _ 文字コード: 0x60 0x61 0x62 0x63 0x64 0x65 0x66 0x67 0x68 0x69 0x6A 0x6B 0x6C 0x6D 0x6E 0x6F 記号: ` a b c d e f g h i j k l m n o 文字コード: 0x70 0x71 0x72 0x73 0x74 0x75 0x76 0x77 0x78 0x79 0x7A 0x7B 0x7C 0x7D 0x7E 0x7F 記号: p q r s t u v w x y z { | } ~
なお、文字としての属性が近いものは文字コード上でも近い値を取る傾向があるため、この性質を利用して文字の種類を判別する処理が可能です。
例)半角文字の文字コードは0x21~0x7Eの範囲に収まるため、これ以外の値を取る文字コードは全角文字として判断するなど
実際にプログラムを作成してみる
それでは実際に入力された文字が全角、半角のどちらであるかを判定するプログラムを作成していきます。
プログラム作成の手順
ここでは、以下の手順で処理を実装します。
- ユーザに任意の文字を入力させる
- 入力された文字が以下の条件に合致するかを調べる
・文字コードの値が0x21~0x7Eの範囲内であれば半角文字と判定
・それ以外であれば全角文字と判定
実装例
上記の手順に従ってプログラムを作成します。使用する言語はC言語です。
#include <stdio.h>
int main(void){
char moji[10];
printf("任意の文字を入力して下さい:");
scanf("%s", &moji);
if (0x21<=moji[0] && moji[0]<=0x7E) {
printf("-> 半角文字\n");
} else {
printf("-> 全角文字\n");
}
return 0;
}
このプログラムを実行すると以下の出力結果が得られます。
任意の値を入力して下さい:A -> 半角文字
任意の値を入力して下さい:あ -> 全角文字
おすすめの記事
本記事を読まれた方には、以下の記事もおすすめします。
【中・上級者への道!】C言語の次に勉強するべきプログラミング言語は何?【オススメは○○】