ちぇりーの館

1−6 C言語プログラミング講座 変数を使って値を保持してみよう!(2)



こんにちは! 今回は、前回に引き続き変数の話の続きです。それでは、以下のプログラムを書いて見ましょう。

#include <stdio.h>

int main(void)
{
	char cVal1;
	char cVal2;

	printf("-----変数を利用した計算サンプル-----\n");

	cVal1 = 'c';
	printf("char型:%c\n", cVal1);

	cVal2 = 'd';
	cVal1 = cVal2;
	printf("char型:%c\n", cVal1);

	scanf("a");

	return 0;
}

このプログラムは、char型のcVal1に'c'という文字を代入して、それをprintf関数で表示しています。 ちなみに、変数にセットする値が、値なのか代入したい変数名なのかを区別する方法は、 文字列が『'(シングルコーテーション)』または、『"(ダブルコーテーション)』 で囲まれているかどうかで判断します。

 種類   区別方法   例 
プログラムで使われる変数名など そのままの文字列で記入 char cVal1 = 'b';
char cVal2 = cVal1;
代入する文字 『'』(シングルコーテーション) cVal1 = 'c';
代入する文字列 『"』(ダブルコーテーション) cVal1 = "test";


このプログラムは特に問題がないと思います。では、次のプログラムはどうでしょうか。

#include <stdio.h>

int main(void)
{
	char cVal1;

	printf("-----変数を利用した計算サンプル-----\n");

	cVal1 = "test";

	printf("char型:%c\n", cVal1);
	scanf("a");

	return 0;
}


このプログラムをコンパイルすると、以下のエラーが発生してしまいます。

文字列エラー

これは、char型は1文字しか保持する事ができないため、複数文字である"test"を入れようとして エラーが発生しています。では、どのようにすれば文字列を入れられるのでしょうか。そこで、配列の 登場です。配列とは、同じ型の変数を連続して定義する事です。つまり、char型を4文字分連続で定義すれば この文字列は表現できる事になります。

#include <stdio.h>

int main(void)
{
	char cVal1[4];

	printf("-----変数を利用した計算サンプル-----\n");

	cVal1[0] = 't';
	cVal1[1] = 'e';
	cVal1[2] = 's';
	cVal1[3] = 't';

	printf("char型:%s\n", cVal1);
	scanf("a");

	return 0;
}


配列は、変数宣言で、"型名 変数名[数字]"の形で表します。数字の部分は、連続する変数の数を入れる事に なります。作成された配列は、"変数名[取り出したい番号]"の形で使用できます。ここで、"[]"に入れる数字の事を 『添え字』又は、『インデックス』といいます。添え字は、0番〜定義した最大数-1までが使用できます。 この例では、最大値を4と定義したので、0〜3までの添え字が使えます。もし、4番目を参照すると参照エラーが起こりプログラムが 止まってしまいます。

配列の説明

それでは、プログラムを組んで実行して見ましょう……。

配列の説明

あれれ、表示された文字の後に謎の文字が表示されちゃいました。実は、printf関数では、意図的に文字列の最後尾を示す '\0'という文字を入れないと文字列の区切りが判らずこのように表示されてしまいます。 文字列の最後には必ず'\0'を入れる癖をつけておきましょう。 それでは、以下に修正したプログラムと配列を使ったサンプルプログラムを示します。

配列を利用したプログラム

こちらが実行結果になります。

配列を利用したプログラムの実行結果

 いかがでしたか? 本日はちょっと短いですが、今日はここまでとなります。次回は、変数を使う練習をかねて簡単な プログラムを書いてみようと思います。
前回同様、内容が判り難かったり、疑問・質問等がありましたら時間の許す限りお答えしようと思いますので どしどしメールを送ってください。でわでわ、お疲れ様でした (^_^)/

< 一覧ページへ戻る


当サイトが面白いと感じた方は、お手数ですが下記リンクをクリックしてください。
クリック毎に当ホームページの評価が上がります。ご協力お願いします!
inserted by FC2 system