アプリ版:「スタンプのみでお礼する」機能のリリースについて

私は最近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;
}

一応コンパイラのエラーは出ていないのですが・・・
初心者なのでわかりません。
どこが原因なのか詳しくおしえてください

A 回答 (2件)

>エラーが出ます(コンパイラのエラーではなくWindows?のエラーのようなもの)


>一応コンパイラのエラーは出ていないのですが・・・
の場合には、「どこまで動いているのか」ということをデバッガのブレークポイントやprintf()を挿入するなどして確認していきます。

今回の問題は「使用してはいけないメモリを使用しようとしている」ことにより発生します。
ある意味、典型的なバグです。

>scanf("%d",i);
ではなく、
scanf("%d",&i);
が正解です。
「変数iに入れる」ではなく、「変数iの値のアドレス(=0番地)に入れる」という動作の為、不正なエラーとなります。
尚、xも同様ですので。
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/09/02 22:14

scanf("%d",i);


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!