文字列の比較

string.h には、文字列を比較するstrcmp関数が用意されています。

strcmp関数は、引数として二つの文字列 s1 と s2 を受け取り、辞書式に比較します。 s1 > s2(辞書で s1 が s2 より後に載る場合)ならば正の値、s1 < s2(辞書で s1 が s2 より先に載る場合)ならば負の値、s1 = s2(s1 と s2 が同じ文字列の場合)ならば 0 を返します(プログラム1)。

#include <stdio.h>
#include <string.h>
#include <time.h>

int main(void) {
  char s1[256], s2[256];

  printf("メール・アドレスを入力してください:\n");
  scanf("%s", s1)

  printf("もう一度入力してください:\n");
  scanf("%s", s2)

  if (strcmp(s1, s2) == 0) {
    printf("OK\n");
  } else {
    printf("NG\n");
  }

  return 0;
}

タイピング・ゲーム

ランダムに文字列を出題し、キーボードから入力された文字列と比較して正解か間違いかを判定します(プログラム2)。

#include <stdio.h>
#include <string.h>
#include <time.h>

int main(void) {
  char s1[256], s2[256];

  printf("メール・アドレスを入力してください:\n");
  scanf("%s", s2)

  strcpy(s1, s2);
  printf("%s\n", s1);

  return 0;
}

繰り返しタイピング・ゲーム

タイピング・ゲームを改良し、10問出題して正解数を出力するようにしてみましょう。

/*
 *  タイピング・ゲーム
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

int main(void) {
  char s[256];
  char ans[10][256] = {
    "cat",
    "dog",
    "lion",
    "bear",
    "tiger",
    "monkey",
    "giraffe",
    "elephant",
    "kangaroo",
    "hippopotamus"
  };

  srand((unsigned int) time(NULL));
  int r = rand() % 10;

  printf("%s:\n", ans[r]);
  scanf("%s", s);
  if (strcmp(s, ans[r]) == 0) {
    printf("正解!\n");
  } else {
    printf("間違い!\n");
  }

  return 0;
}

スピード・タイピング・ゲーム

次に、スピード計算ゲームと同じように、制限時間内に何問正解できるかを競うゲームにしてみましょう。

/*
 *  繰り返しタイピング・ゲーム
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

int main(void) {
  char s[256];
  char ans[10][256] = {
    "cat",
    "dog",
    "lion",
    "bear",
    "tiger",
    "monkey",
    "giraffe",
    "elephant",
    "kangaroo",
    "hippopotamus"
  };

  srand((unsigned int) time(NULL));

  int score = 0;  // 得点
  int i;
  for (i = 1; i <= 10; i++) {
    int r = rand() % 10;

    printf("第%d問: %s:\n", i, ans[r]);
    scanf("%s", s);
    if (strcmp(s, ans[r]) == 0) {
      printf("正解!\n");
      score++;
    } else {
      printf("間違い!\n");
    }
  }
  printf("%d問正解\n", score);

  return 0;
}
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS