dポイントプレゼントキャンペーン実施中!

タイトルの通りです。以下のプログラムを実行するとコアダンプがでるので、解決法を教えて頂きたいです。
5つのdatファイルの読み込みはうまくいきました。15個に増やしたところ、コアダンプが表示されました。
ファイルポインタを使わずに実行してみたら15個でも大丈夫でしたので、ファイルポインタが原因かと思います。

typedef struct{
int class;
int** matrix;
}pattern_struct;

int main(int argc,char* argv[]) {
pattern_struct *learn;
FILE *fp;
int width,height;
int i,j,k,value;

learn=(int*)malloc(argc*sizeof(int));

//ファイルからの学習データの読み込み
for(k=1;k<argc;k++){
fp=fopen(argv[k],"r");

printf("%s\n",argv[k]);
printf("学習する数字を入力してください ");
scanf("%d",&learn[k].class);

fscanf(fp,"%d %d",&width,&height);

learn[k].matrix=(int**)malloc(height*sizeof(int*));
for(i=0;i<height;i++) learn[k].matrix[i]=(int*)malloc(width*sizeof(int));
for(i=0;i<height;i++){
for(j=0;j<width;j++){
fscanf(fp,"%d",&value);
learn[k].matrix[i][j]=value;
}
}
fclose(fp);
fp=NULL;
}
return 0;
}

A 回答 (2件)

あと、これ、コンパイルはどんなコンパイラ使ってますか?


その時に警告表示の設定はしていますか?

#1で示した行で警告でませんか?

この回答への補足

コンパイラにはcygwinを使用しています。
はい。#1で示した行で
警告: assignment from incompatible pointer type
と警告されました。
どのような問題があるのですか?

補足日時:2013/05/01 22:50
    • good
    • 0
この回答へのお礼

その行を修正したところすべてうまくいきました。
ありがとうございました

お礼日時:2013/05/01 23:21

> learn=(int*)malloc(argc*sizeof(int));



なんでこのサイズ?
    • good
    • 0

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