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があります。