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

入力した文字を表示してみよう2

前回のコードです。


#include <stdio.h>

int main(void){

	char buf;
	
	printf("文字を入力して下さい\n");

	scanf("%c",&buf);

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

	return 0;
}


では、続きを説明していきます。

printf関数はもういいですね。ただ文字を表示してるだけです。
scanf関数についてですが、
これはユーザが入力した内容を受け取ることが出来る関数です。
第一引数に、受け取る変数の方に応じた、%(c,d,f,s)等を合わせた文字列、
第二引数に変数のアドレスを入力します。
これは型によって、下記のように第一引数の文字列が変わります。

char %c
int %d
float %f
文字列 %s

第一引数は文字列として入力する必要があるので、
ダブルクオテーション””で囲む必要があります。
今回はchar型なので”%c”となっています。

次に第二引数ですが、
変数のアドレスを指定する必要があります。
変数のアドレスというのは、簡単にいうと、その変数がある場所です。
scanfの第二引数には、その場所を教えてあげないと、その変数がどこにあるのかわからないので、
書き込みにいけないわけなんです。
その変数のアドレスはどのように表すかというと、
変数の前に&をつけるだけです。
abcという変数であれば、&abcです。簡単ですよね?
ですので、今回は&bufと指定してるわけです。

最後にprintf関数ですが、いつもと違って第二引数が指定されています。
変数に入ってる値を表示するには、この用に第二引数にその変数を指定します。
第一引数にはscanfで指定したときと同じように書きます。
char型の値を表示するので、%cという文字列を指定します。
ですが、scanfと少し違って、回りに文字を書くことが出来ます。
例えば、

bufという変数に「A」という文字が入っていた場合は、

入力した値は→Aです、と表示されます。

このように周りに色々と文字を加えて表示することが可能です。

では、それでは実行してみましょう。
実行すると、「文字を入力して下さい」と表示されたあと、
カーソルが点滅している状態になると思います。
これがユーザからの文字の入力を待っている状態になります。
ここで文字を入力して、エンターキーを押せば入力完了なんですが、
前回の講座で注意したとおり、char型は1バイトしか保存できません。
つまり、半角英字で1文字しか入力できないんです。
日本語は2バイト作ってしまうので入力できませんよ~w
ちなみに2バイト以上入力するとエラーがでます(笑)

ということで、注意して1文字だけ入力して、エンターキーを押すと、

入力した文字は→?です。

と表示されると思います。?はあなたが入力した文字になっていると思います。

どうでしょうか?
今回は結構難しかったと思いますが理解できましたでしょうか?
次回は変数について詳しく見て行きます。

>> 【変数について】に進む
>> C言語入門トップに戻る