• ベストアンサー

C言語で数当てゲーム

私は最近5月からCのプログラミングを学び始めた中3なんですが じゃんけんゲームと丁半ゲームを今までに作りました で今回数当てゲームを作ってみたのですが何回作り直しても エラーが出ます(コンパイラのエラーではなくWindows?のエラーのようなもの) じゃんけんゲームなどと同じように作ったつもりなのですが・・・・ どうなっているのでしょうか? ソースは↓です #include <stdio.h> #include <time.h> #include <stdlib.h> #include <conio.h> int main() { int kazu,i,x; printf("数当てゲーム!!\n"); srand(time(NULL)); x=0; i=0; do { kazu=rand()%9+1; printf("数を入力してください(1~9)\n"); scanf("%d",i); if(i<10){ if(i==kazu) { printf("当たり!!\n続けるなら0やめるなら0以外を入力"); scanf("%d",x); } else {printf("残念・・・はずれ\n続けるなら0やめるなら0以外を入力"); scanf("%d",x);} } else {printf("入力ミスです\n続けるなら0やめるなら0以外を入力"); getch();} }while(x==0); return 0; } 一応コンパイラのエラーは出ていないのですが・・・ 初心者なのでわかりません。 どこが原因なのか詳しくおしえてください

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>エラーが出ます(コンパイラのエラーではなくWindows?のエラーのようなもの) >一応コンパイラのエラーは出ていないのですが・・・ の場合には、「どこまで動いているのか」ということをデバッガのブレークポイントやprintf()を挿入するなどして確認していきます。 今回の問題は「使用してはいけないメモリを使用しようとしている」ことにより発生します。 ある意味、典型的なバグです。 >scanf("%d",i); ではなく、 scanf("%d",&i); が正解です。 「変数iに入れる」ではなく、「変数iの値のアドレス(=0番地)に入れる」という動作の為、不正なエラーとなります。 尚、xも同様ですので。

masamusic
質問者

お礼

ありがとうございます。 昨日の夜に急いで作ったもので こんな単純なミスにきずきませんでした。 早急な対応ありがとうございました

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8431/18053)
回答No.2

scanf("%d",i); scanf("%d",x); scanf("%d",x);} この辺を考え直してみましょう。

すると、全ての回答が全文表示されます。

専門家に質問してみよう