- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 授業/C言語基礎/文字 へ行く。
- 1 (2015-12-10 (木) 09:11:16)
- 2 (2015-12-11 (金) 04:29:17)
- 3 (2016-12-01 (木) 16:24:13)
これまで、文字列は、ダブル・クォーテーション " で囲まれたもので、printf関数またはscanf関数に渡すだけのものでした。
実は、文字列は文字を並べたデータ、つまり、文字の配列です。
そこで、まずは文字について説明します。
文字はchar型の変数 †
文字を格納するための変数の型はchar型です。
char c;
文字はシングル・クォーテーションで囲む †
文字列はダブル・クォーテーションで囲みましたが、文字はシングル・クォーテーション ' で囲みます。
char c = 'A';
文字を出力するときの変換指定子は %c †
printf関数で、変数に格納された文字を出力するときは、変換指定子を %c とします(プログラム1)。
char c; scanf("%c", &c); printf(">> %c\n", c);
演習1 †
プログラム1を作成し、実行結果を確認せよ。
エスケープ・シーケンスは1文字 †
改行 \n、バックスラッシュ \\、ダブル・クォーテーション \" などのエスケープ・シーケンスは、1文字として扱われます(プログラム2)。
char c = '\\'; printf(">> %c", c);
演習2 †
プログラム2を作成し、実行結果を確認せよ。
文字は文字コードで表される †
文字は、2進数の文字コードで表されています。
たとえば、ASCIIコードの場合、A は2進数の 01000001 と表されていて、16進数で表すと 41、10進数で表すと 65 です(プログラム3)。
char c = 'A'; printf(">> %d\n", c);
このプログラムを実行すると、次のようになります。
luna% a.out >> 65
このため、文字を整数として考えると、足し算もできます(プログラム4)。
char c = 'A' + 1; pinrtf(">> %c\n", c);
このプログラムを実行すると、次のようになります。
luna% a.out >> B
演習3 †
プログラム3とプログラム4を作成し、実行結果を確認せよ。
文字を数値に変換する(おまけ) †
文字を2進数の文字コードとして考えると、計算によって文字を数値に変えることができます。
char c1, c2; int i1, i2; printf("数字を2回入力してください"); scanf("%c", &c1); scanf("%c", &c2); i1 = c1 - '0'; i2 = c2 - '0'; printf("合計は%d\n", i1 + i2);
文字の種類を判別する(おまけ) †
文字を2進数の文字コードとして考えると、文字コードの比較によって文字の種類を判別することができます。
char c]; printf("文字を入力してください"); scanf("%c", c); if (c >= '0' && c <= '9') { printf("数字です\n"); else if (c >= 'A' && c <= 'Z') { printf("大文字のアルファベットです\n"); else if (c >= 'a' && c <= 'z') { printf("小文字のアルファベットです\n"); } else { printf("数字またはアルファベットではありません"); }