5.画面からの入力
入力項目が多い時や繰り返して入力する時はパラメータからセットするのは不向き
です。そんな時は画面から対話形式に入力すれば良いでしょう。
下記の18行を打ち込み後、コンパイルしてから実行します。
#include <stdio.h>
#include <stdlib.h>
main()
{
char buf[8];
int x, y;
while (1) {
printf("xを入力して下さい(e:end) : ");
gets(buf);
if (buf[0] == 'e') break;
x = atoi(buf);
printf("yを入力して下さい(e:end) : ");
gets(buf);
if (buf[0] == 'e') break;
y = atoi(buf);
printf("x[%d] y[%d] x + y = [%d] \n", x, y, x + y);
}
printf("eが入力されたので終了します。\n");
}
いかがですか?
画面にxとyの値を入力するように催促されるので4桁以内の数字を打ち込み
enterキーを押して下さい。
正しく加算結果が表示されていますか?
終了する時は「e」と打ち込みenterを押します。
今回の学習項目
1)gets()
画面から入力された文字列を()内に指定した場所へ格納します。
2)while (1) { ... }
以前ループとしてfor文がありましたが、同様にループとしてwhileが
あります。
whileは()内の条件が一致しているあいだ{}内を繰り返します。
この例では、()内が1なので永久ループになっています。
3)atoi
前回「文字を数字へ」として数値変換しましたが、実際には関数が用意されて
いるので、それを使用します。
これは()内に数字の文字列をセットするとint型の数値として値をかえし
ます。
4)if (...)
()内の条件が真ならばその後の命令文を実行します。
実行したい命令文が2つ以上ある時は{}で囲みます。
また、条件が真の時は直後の命令文を実行しますが、その他に偽の時は次に
elseを書きその後に命令文を記述します。
複数命令の時は{}をお忘れなく。
5)buf[0] == 'e'
上記は条件文の例ですが、=(イコール)が2つ続いています。
C言語では、条件文の等式を表すには==と記述します。
これは、=だと代入文となっている為で、上記の例ではbuf[0]にeのコード
0x41が入ってしまいます。
他の言語からC言語へ移って来た方はよく間違え易いので注意しましょう。
他に条件式の例をあげると!=(イコールで無い)、<=(右項以下)、
>=(右項以上)、<(右項未満)、>(右項超過)等があります。
6)break
ループ文を抜ける命令です。
もし、ループ文が入れこになっている時は、最も内側のループ文を抜けます。
別に、ループを抜けずに最後へ飛ばす命令としてcontinueがあります。