在我的程序出现总线错误Bus error (core dumped),锁定其错误出现在如在代码中的fopen部分
void dipget(int icdp, int nti, float *dip, char * tanpath)
{
FILE * dfile;
char *filename;
printf("Choose %d from %s\n",icdp, tanpath);
sprintf(filename, "%s%d.x.dat",tanpath, icdp);
printf("Open file: %s \n", filename);
if((dfile = fopen(filename,"rb"))==NULL) // 这一行出现 Bus error
{
printf("\n Open %s File error\n",filename);
exit(EXIT_FAILURE);
}
fread(dip, sizeof(float), nti, dfile);
fclose(dfile);
}
这里只需要做一步修改,即可解决问题,道理十分简单,在使用sprintf 时前,需要给它分配一个buffer空间
char *filename;
改为
char filename[200];