博士

さてと、いよいよ文字型変数に入るとしようかの?
最初にまとめじゃ。


ぷうさん「?」

え?まとめから入るの?


博士

そうじゃ、まずは使い方を覚えてからじゃ。

文字型変数の宣言・設定・代入・表示

博士「ここをチェックじゃ」

まずは文字型変数をプログラムで使うのに必要な最低限の知識からじゃ。

文字型変数の宣言

char moji;
  • 文字を一つ入れる文字型変数mojiを定義する

文字型変数の初期設定

char moji='A';
  • 文字型変数mojiに、初期値として文字のAを代入する
  • 代入する文字を(引用符)で囲む。

文字型変数への文字代入

moji='A';
  • 文字型変数mojiに文字のAを代入する
  • 代入する文字を(引用符)で囲む。

文字型変数の文字表示

printf ("%c",moji);
  • %c」を指定すると、文字型変数mojiを文字で表示できる。

実際の表示プログラム例

#include <stdio.h>
main()
{
   char moji;
   moji='A';
   printf ("moji=%c\n",moji);
}

実行結果

moji=A

博士「ここをチェックじゃ」

どうかの?
文字は一つしか入らないという事を頭に入れておくんじゃぞ。


困った顔のぷうさん

え~、複数入らないの~、使えないじゃん。


博士

複数使う場合は後から教えるぞい。
まずは基本からじゃ!・・・さてと次、次。

文字テストの標準関数

博士

文字を検査する標準関数を説明するぞい。
検査用のファイルはstdio.hには入っておらんので、追加で宣言をする必要があるぞい。

ヘッダ・ファイル

ctype.h

#include <ctype.h>

文字タイプの検査

int isalnum(int c)
英数字の検査
int isalpha(int c)
英字の検査
int isdigit(int c)
10進数の検査
int isxdigit(int c)
16進数の検査

戻り値は、条件を満たすとき 真(0以外の数値)を返し、
条件を満たさないとき 偽(0)を返す。

大文字小文字の変換

int tolower(int c)
小文字に変換
int toupper(int c)
大文字に変換

戻り値は、変換された文字を返す。
対応する文字がないときは、そのまま返す。

文字テストの標準関数を使ったプログラム

#include <stdio.h>
#include <ctype.h>
void test(char c);
void chang(char c);
main()
{
   char mojia,mojib;
   int intmoji;
   int flg;
   test ('A');
   test ('S');
   test ('0');
   test ('$');
}
void test(char c) {
   printF("\n**** moji=%c ****\n");
   printF("isalnum=%d ",isalum(c));
   printF("isalpha=%d\n",isalum(c));
   printF("isdigit=%d ",isdigit(c));
   printF("isxdigit=%d\n",isxdigit(c));
   printF("tolower=%c ",tolower(c));
   printF("toupper=%c\n",toupper(c));
}








博士「ここをチェックじゃ」

文字の検査結果は戻り値を数値で返すので、表示箇所を「%d」であらわすのじゃ。
そして文字の変換は戻り値を文字で返すので、表示箇所を「%c」で指定するのじゃぞ。

実行結果

**** moji=A ****
isalnum=1 isalpha=1
isdigit=0 isxdigit=128
tolower=a toupper=A

**** moji=S ****
isalnum=2 isalpha=2
isdigit=0 isxdigit=0
tolower=s toupper=S

**** moji=0 ****
isalnum=4 isalpha=0
isdigit=4 isxdigit=128
tolower=0 toupper=0

**** moji=$ ****
isalnum=0 isalpha=0
isdigit=0 isxdigit=0
tolower=$ toupper=$

博士「ここをチェックじゃ」

実行結果の0以外の値はコンパイラによって異なるがの。
(0以外=真、0=偽 じゃ)

文字と文字コード

博士「(^^♪」

文字も数値で記憶されておるのじゃぞ。

実行文

#include <stdio.h>
main()
{
   char moji;
   moji='A';
   printf("1:code=%d moji=%c\n",moji,moji);
   moji='B';
   printf("2:code=%d moji=%c\n",moji,moji);
   moji='C';
   printf("3:code=%d moji=%c\n",moji,moji);
}

実行結果

1:code=65 moji=A
2:code=66 moji=B
3:code=67 moji=C

チェックポイント

ぷうさん「OK」

へー、同じ変数を出力させているのに、「%c」か「%d」で違う表示がかわるんだ。


博士「Good!」

そうじゃぞ、文字を表示する場合は「%c」、文字コードを表示する場合は「%d」じゃ。
くれぐれも間違えるのではないぞ!ぷうさんはそそっかしいからのう。


ぷうさん「怒」

余計なお世話だ!!

その二 文字列へ

四日目 文字列について 目次

三日目へ

ぷうさんの七日間戦争 四日目

五日目へ