授業/C言語基礎/文字 のバックアップ差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
これまで、文字列は、''ダブル・クォーテーション'' ''"'' で囲まれたもので、printf関数またはscanf関数に渡すだけのものでした。

実は、文字列は文字を並べたデータ、つまり、文字の配列です。

そこで、まずは文字について説明します。


*文字はchar型の変数 [#if83af1c]

文字を格納するための変数の型は''char型''です。
#geshi(c){{
  char c;
}}


*文字はシングル・クォーテーションで囲む [#if7f171b]

文字列はダブル・クォーテーションで囲みましたが、文字は''シングル・クォーテーション'' ''''' で囲みます。
#geshi(c){{
  char c = 'A';
}}


*文字を出力するときの変換指定子は %c [#u56ed64b]

printf関数で、変数に格納された文字を出力するときは、変換指定子を ''%c'' とします(プログラム1)。
#geshi(c){{
  char c = 'A';
  
  printf(">> %c\n", c);
}}

**演習1 [#df4b341c]
プログラム1を作成し、実行結果を確認せよ。


*エスケープ・シーケンスは1文字 [#g7b54906]

改行 \n、バックスラッシュ \\、ダブル・クォーテーション \" などのエスケープ・シーケンスは、1文字として扱われます(プログラム2)。
#geshi(c){{
  char c = '\"';
  
  printf(">> %c", c);
}}

**演習2 [#x91abbdc]
プログラム2を作成し、実行結果を確認せよ。


*文字は文字コードで表される [#x3256690]

文字は、2進数の文字コードで表されています。

たとえば、ASCIIコードの場合、''A'' は2進数の ''01000001'' と表されていて、16進数で表すと 41、10進数で表すと ''65'' です(プログラム3)。
#geshi(c){{
  char c = 'A';

  printf(">> %d\n", c);
}}

このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
>> 65
}}

このため、文字を整数として考えると、足し算もできます(プログラム4)。
#geshi(c){{
  char c = 'A';

  c++;
  pinrtf(">> %c\n", c);
}}

このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
>> B
}}



**演習3 [#x6169bc6]
プログラム3とプログラム4を作成し、実行結果を確認せよ。





*文字を数値に変換する(おまけ) [#i42f8772]

文字を2進数の文字コードとして考えると、計算によって文字を数値に変えることができます。
#geshi(c){{
  char c = '8';
  int i = c - '0';

  printf(">> %d\n", i);
}}



*文字の種類を判別する(おまけ) [#d2f211db]

文字を2進数の文字コードとして考えると、文字コードの比較によって文字の種類を判別することができます。
#geshi(c){{
  char s[16];

  printf("文字を入力してください");
  scanf("%1s", s);

  if (s[0] >= '0' && s[0] <= '9') {
    printf("数字です\n");
  else if (s[0] >= 'A' && s[0] <= 'Z') {
    printf("大文字のアルファベットです\n");
  else if (s[0] >= 'a' && s[0] <= 'z') {
    printf("小文字のアルファベットです\n");
  } else {
    printf("数字またはアルファベットではありません");
  }
}}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS