>> C言語入門トップに戻る

文字と文字列について


今日は文字と文字列について説明していきたいと思います。
前々回の講座では、変数に一文字だけしか保存することができませんでしたが、
複数の文字を保存することも可能です。
それは配列を使えば可能です。
char型の変数は1バイトしか保存できませんでしたが、
これを配列にしてやれば、文字列を保存することができます。
配列の書き方はこうです。

#include <stdio.h>

int main(void){

	char buf[10];

	scanf("%s",buf);

	printf("入力した値は→%sです。",buf);

	return 0;
}


これを実行するとこんな感じになります。


それではコードの解説をしていきます。

char buf[10]

というのは、char型の変数を配列で10個確保したという意味になります。
つまり、1×10で10バイト分の文字が保存できるようになったわけですね。
では配列の構造はどうなっているかを見てみましょう。

buf[0] → A
buf[1] → B
buf[2] → C
buf[3] → D
buf[4] → E
buf[5] → \0


こんな感じに文字が入っており、一つ一つの変数は名前の後ろに[数字]をつけて表します。
この数字を添字と言います。
bufという箱が10個できたわけですね。
一つ目の箱を表すときは、buf[0]になります。
1から始まるんじゃないの?と思ったかたも居るでしょうが最初は0から始まります。
ちょっとややこしいんですが、
最初に宣言するときは
buf[10]
と書きますが、
これはbufの変数を10個確保しただけです。
実際の変数としては、
[0]からbuf[9]までの10個になります。
決してbuf[10]というものは存在して(確保されて)いないので注意して下さい。
buf[0]などの一つ一つを配列の要素と言います。

上にある配列の構造をもう一度見てください。
配列の最後に「\0」という文字があります。
配列の中にある文字列については、
配列の最後がヌル文字「\0」で終わらなければいけないというルールがあります。
なぜかというと、配列の中の文字列がどこが終端なのかが判断できないからです。
そのためにヌル文字「\0」を入れて、そこが終端だという目印にしているのです。
つまり、
scanf関数で文字を入力すると、自動的に最後にこのヌル文字が付加されますが、
自分で直接文字を入れたり、関数によっては自動的にヌル文字を付加してくれない場合があります。
その場合は忘れずにヌル文字を入れましょう。

後は今までと同じように、scanf関数に渡すだけです。
scanfの第二関数は何を渡すか覚えてますか??
そう、その変数のポインタです。
今回は配列として確保しているので、
その配列の先頭ポインタを渡す必要があります。
配列の先頭ポインタの表し方としては二つ有ります。

単純に配列名だけ、
buf
で表すか、
&buf[0]
で表すかのどちらかです。

普通は配列名だけを書いて、先頭ポインタを現すことが多いです。
二つ目の表し方の意味はわかりますか?
buf[0]というのは配列の最初の要素を表してるので、
それに&をつけて、先頭ポインタのアドレスを表しているわけです。
簡単ですよね?

実行すると、ヌル文字を除いた9文字分だけ
入力できます。
それ以上入力すると、前に言ったとおりエラーになりますので注意して下さい。

ptintf関数で表示するときは、
今回は文字列を表示するので、第一引数は、
%sで表しています。
第二引数は同じように配列の先頭ポインタを渡せばいいです。
それだけで文字列が表示できます。

今回の説明はここまで。
付いて来れてますか?大丈夫ですか?
わからなければツイッターかメールにてご質問下さい。

次回は配列について、もうちょっと詳しく見ていきます。


>> 【配列を使ってみよう】に進む
>> C言語入門トップに戻る