ここから本文です

c言語で下記プログラムにて警告のせいでランタイムエラーが出ました。

非公開さん

2019/3/513:26:43

c言語で下記プログラムにて警告のせいでランタイムエラーが出ました。

どういう種のエラーでしょうか
Main.c:21:19: warning: format specifies type 'int *' but the argument has type 'int' [-Wformat]
scanf("%d",KakeiboData[i].date);

struct Kakeibo{

short date;
int money;
};


#include <stdio.h>
int main(void){

int N;
double X;
int Y ;
int i;
scanf("%d",&N);

struct Kakeibo KakeiboData[100];

for(i=0;i<N;i++){

scanf("%d",KakeiboData[i].date);
scanf("%d",KakeiboData[i].money);

X=KakeiboData[i].money*0.01;


for(Y=0;Y<21;Y=Y+10) {
if(KakeiboData[i].date==3+Y){

X=KakeiboData[i].money*0.03;
}else if(KakeiboData[i].date==5+Y){

X=KakeiboData[i].money*0.05;

}
}


}

printf("%f",X);

}

閲覧数:
69
回答数:
4

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

uso8megaさん

2019/3/613:03:45

scanf("%d",&N);

でやっているようにポインタ[変数の
ある場所]を渡すべきなのに、未初期化
ゴミデータを渡してる状態

scanf("%hd",&KakeiboData[i].date);
scanf("%d", &KakeiboData[i].money);

質問した人からのコメント

2019/3/6 22:06:55

そうごみごみデータ

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

ikt********さん

2019/3/613:14:43

こっち
> scanf("%d",&N);
はちゃんとアドレス演算子 & 付きなのに、なんで
そっち
> scanf("%d",KakeiboData[i].date);
> scanf("%d",KakeiboData[i].money);
は付けず、かつ親切警告出ても気づけない... のかしら。

ちょっと不思議。

2019/3/522:40:13

> 警告のせいでランタイムエラー
違いますよ。あなたがプログラムを間違えたせいで、警告とランタイムエラーが出たのです。

intへのポインタつまりint型のデータの収納場所を教えなければいけないところにint型の値を与えようとしているので、コンパイラは「変じゃない?」と警告を出しました。
しかし、あなたは警告を無視してプログラムを実行したので、プログラムはあなたの命令通りにその値をアドレスと解釈してとんでもないアドレスをアクセスしに行って、OSに怒られて叩き落とされた、のがランタイムエラーです。

k02********さん

2019/3/514:21:51

修正
scanf("%d",&KakeiboData[i].date);
scanf("%d",&KakeiboData[i].money);

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる