前提・実現したいこと
C言語で数当てゲームを作成しています。
その際に
続けますか?(1:続ける 0:終了):
の画面まで表示されるのですが1や0を入力してもプログラムが止まってしまいます。
発生している問題・エラーメッセージ
3桁の数を当ててください! 1桁目の予想を0~9の数字で入力してください:3 2桁目の予想を0~9の数字で入力してください:4 3桁目の予想を0~9の数字で入力してください:5 0ヒット! 1ブロー! 続けますか?(1:続ける 0:終了):1
該当のソースコード
C
1#include <stdio.h> 2#include <stdbool.h> 3#include <stdlib.h> 4#include <time.h> 5 6typedef char String[1024]; 7 8int main(void) 9{ 10 srand((unsigned)time(NULL)); 11 printf("***数当てゲーム(レベル2)***\n"); 12 printf("3桁の数を当ててください!\n"); 13 14 const int TIMES = 3; 15 int answer [TIMES]; 16 int input [TIMES]; 17 18 for (int i = 0; i < TIMES; i++) 19 { 20 answer[i] = rand () % 10; 21 } 22 23 do { 24 int hit = 0; 25 int blow = 0; 26 27 for (int j = 0; j < TIMES; j++) 28 { 29 printf("%d桁目の予想を0~9の数字で入力してください:", j + 1); 30 String inputStr; 31 scanf("%s", inputStr); 32 input[j] = atoi(inputStr); 33 } 34 35 for (int i = 0; i < TIMES; i++) 36 { 37 if (answer[i] == input[i]) 38 { 39 hit++; 40 } 41 for (int j = 0; j < TIMES; j++) 42 { 43 if (input[i] == answer[j] && i != j) 44 { 45 blow++; 46 } 47 48 } 49 } 50 51 52 printf("%dヒット! %dブロー!\n", hit, blow); 53 if (hit == 3) 54 { 55 printf("正解です\n"); 56 break; 57 } else { 58 printf("続けますか?(1:続ける 0:終了):"); 59 String retryStr; 60 scanf("%s, retryStr"); 61 if (atoi(retryStr) == 0) 62 { 63 printf("正解は%d%d%dでした!\n", answer[0], answer[1],answer[2]); 64 break; 65 } 66 67 } 68 }while (true); 69 70 return 0; 71}
試したこと
何度も見直したが、問題点がわかりませんでした。
補足情報(FW/ツールのバージョンなど)
VScodeで作成しています。
コンパイルはgccを使っています。
回答3件
あなたの回答
tips
プレビュー