fclose()でセグメンテーション違反
C言語でのファイル読み込みで、ファイルを開いてデータを読み込んで表示することはできたのですが、最後のfclose(fp)でセグメンテーション違反になります。一番最後のwhileループをコメントアウトしたところセグメンテーション違反にはならなかったので、ここに何か問題があると思うのですが、どこが悪いのかが分かりません...
#include<stdio.h>
#include<stdlib.h>
main(void){
FILE *fp;
int i=0 , j=0 ,cnt = 0 , c=0;
char *name="data.txt";
float *buf1,*buf2;
if((fp = fopen(name,"r")) == NULL){
printf("error\n");
return 0;
}
else{
while((c = getc(fp)) != EOF) {
if(c == '\n') cnt++;
}
printf(">>%d<<\n",cnt+1);
rewind(fp);
buf1 = (float *)malloc( (int)(cnt/2) +1);
buf2 = (float *)malloc( (int)(cnt/2) +1);
/*ここからがおかしい?*/
while(1){
if( fscanf( fp ,"%f %f",&buf1[i],&buf2[i])==EOF )break;
printf("%f %f\n",buf1[i],buf2[i]);
i++;
}
fclose(fp);
}
return 0;
}
なぜセグメンテーション違反になっているのでしょうか?