#include <stdio.h> #include <stdlib.h> #define MAX_NAME_LENGTH 100 int main(void) { char name[MAX_NAME_LENGTH]; printf("What are your name ? : "); fgets(name, MAX_NAME_LENGTH, stdin); printf("Hello, %s\n", name); return EXIT_SUCCESS; }これを前回と同じく次のようにビルドします。
$ gcc my_prog2.c -o my_prog2さて、実行させると次のようになります。
$ ./my_prog2 What are your name ? :ここで、Lionと入力してみましょう。
$ ./my_prog2
What are your name ? : Lion (キーボードで入力する)
Hello, Lion
そうすると、Hello, [入力した名前]が表示されました。
解説
今回、新しく下記の4つの事柄が出てきました。それぞれ説明していきます。- #define文
- 文字を格納する変数(name)
- fgets関数
- printfの中の%s
#define文
#defineの後には、通常、2つの語が並びます。この文はこれ以降に出現する1つ目の単語を2つ目の単語に置換します。 今回の例ですと、MAX_NAME_LENGTHが100に置換されるので、name[MAX_NAME_LENGTH]はname[100]と書いた場合と同じになります。では、なぜ、わざわざこのような面倒なことをするのでしょうか?それには、主に2つ理由があります。 1つは、複数回使用される数値をこのように定義しておくと、数値の変更が必要なとき、#define行の値を変えるだけで対応できること。 もう1つは、その数値が何を表しているのかが分かりやすくなるためです。
文字を格納する変数(name)
キーボードから文字列を入力するには、それを格納するための場所が必要になります。C言語では、文字列や数字などを格納するものを変数と呼びます。 変数は、使用する前に、その種類と名前を宣言しなければなりません。 このプログラムの場合、種類は文字列(char)で名前はnameです。 さらに、文字列の場合、格納できる最大文字数も、次の形式で一緒に指定する必要があります。char 変数名[最大の文字数];
0 件のコメント:
コメントを投稿