跪求解答 段错误!!
求教各位大神:
sprintf(filename,"/home/panda/met/ag/netlongwave/%d.%d.%d.txt",year,month,day);
if((Metfile = fopen(filename,"rt")) == NULL){
fprintf(stderr,"could not open file %s\n",filename);
exit(1);
}
while(!feof(Metfile)){
fscanf(Metfile,"%f %f %f\n",&lat1, &lon1, &met1);
lat[counter] = lat1;
lon[counter] = lon1;
met[counter] = met1;
counter ++ ;
}
fclose(Metfile);
这段程序在运行时 出现段错误。 调试了下 计数器 counter会突然变成一个很大的负数。 这是什么问题,怎么解决?
我的系统是 ubuntu linux 编译器是gcc
[解决办法]
gdb ,程序打个断点 一步步走下去,看看那里core dump 就知道了。
[解决办法]
数组越界; 要么数据太多,counter类型太小,加到最大值再加就变成负的最大。
还有,数据文件最后是否有空行?
[解决办法]
1、可能是filename空间不够;
2、counter为负或过大导致lat/lon/met数组越界。
int counter;
counter = 0;