ファイルサイズの取得について
2つのテキストファイルのサイズを取得し、そのファイルサイズ分だけを動的にメモリを確保しようとしています。
int *c,*a;と宣言し、
fp=fopen("./data/Problem.txt","r");//1つ目のファイル
fseek(fp, 0, SEEK_END); /* ファイルの終端までシーク */
size = ftell(fp); /* 終端の位置、すなわちファイルサイズを得る */
fseek(fp, 0, SEEK_SET); /* ファイルの先頭に戻る */
c = (int *)malloc(size); /* ファイルサイズ分メモリ確保 */
while((x=fgetc(fp))!=EOF){
c[i]=x;
i++;
}
c[i]='\0';
i=0;
fclose(fp);
fpa=fopen("./data/Answer.txt","r");//2つ目のファイル
fseek(fpa, 0, SEEK_END);
size = ftell(fpa);
fseek(fpa, 0, SEEK_SET);
a = (int *)malloc(size);
while((x=fgetc(fpa))!=EOF){
a[n]=x;
n++;
}
a[n]='\0';//・・・・(1)
n=0;
fclose(fpa);
とすると1つ目のファイルの方だけはうまくいくのですが、(1)の部分で
「sample.exeの0x00411dcでハンドルされていない例外が発生しました:0xc0000005:場所0x0000000に書き込み中にアクセス違反が発生しました。。」
というエラーが出ます。
また、
int *c,*a;を
int *c,a[300];
のように片方を配列として宣言し、
//a = (int *)malloc(size); /* ファイルサイズ分メモリ確保 */
のようにコメントアウトすると上記のエラーは出ずにcにメモリは確保されているようです。
これは何故なのでしょうか?
また、どうすればaとcでメモリを確保出来るようになるのでしょうか?
よろしくお願いいたします。
補足
試してみましたがダメでした・・・