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つ選びます。ヒントを表示していますが、最も近かった情報を記録して表示すると、もっと楽しめると思います。

スポンサーリンク