Bus error (core dumped) occurs in my program, and the error is locked in the fopen part of the code
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);
}
Here, you only need to make one step of modification to solve the problem. The reason is very simple. Before using sprintf, you need to allocate a buffer space to it
char *filename;
Change to
char filename[200];