C言語 while 繰り返し スクリプトの書き方
バイオインフォ道場、くまぞうです。
while文は、条件を満たす間ずっとコードブロックを繰り返す場合に使います。例えば、「ファイルの末尾までチェックする」とか、「ある条件を満たすまで」というような回数不定の条件などで用いると便利です。
while文による繰り返し制御
case文の書き方
while文を繰り返すための条件式を書きます。条件が条件を満たす間ずっと繰り返しを行います。条件を満たしたか?の判断に、「繰り返し処理を脱出するbreak」や「途中で折り返すcontinue」などの制御文と一緒に用いられることが多いです。
while文の一般的な形式
while (条件式) { 対応した文; ... }
プログラム
test_while.c
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> void main(int argc, char* argv[]) { srand(time(NULL)); int sec = rand()%26; if (argc>1 && argv[1][0] == 'D') { printf("%c %2d\n", sec+'A', sec); } printf("PLEASE INPUT KEY(A-Z). Quit:Control+C\n"); int count = 0; char line[80]; char key; while (count<10) { fgets(line, sizeof(line), stdin); sscanf(line, "%c", &key); count++; if (sec == (key-'A')) { break; } else { (sec<(key-'A'))? printf("A..%c", key) : printf("%c..Z", key); printf("\n"); } } printf("%s\n", count<10 ? "you win" : "C win"); }
プログラム実行
test_while
$ gcc test_while.c -o test_while $ ./test_while PLEASE INPUT KEY(A-Z). Quit:Control+C A A..Z H H..Z O O..Z Q Q..Z V A..V T T..Z you win
プログラムについて
test_while.cでは、入力されたキーをチェックするために「while」を使いました。fgetsとsscanfを使って、キーボードから入力された1文字を判断します。10回以内の入力でランダムに選ばれた文字と一致したら、「あなたの勝ち」です。10回以内に当てれなかったら、「C」の勝ちです。whileの条件は入力回数のcount<10で、1回入力する度にcount+1されます。key==sec(key-'A')でキーが一致したらbreakでwhileの繰り返しを抜けます。 秘密のキーは、「rand()%26」で実行毎に1つ選びます。ヒントを表示していますが、最も近かった情報を記録して表示すると、もっと楽しめると思います。