跪求解答 段错误!!
求教各位大神:
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数组越界。
[解决办法]
counter 初始化了没有?
int counter;
counter = 0;
[解决办法]
进来学习一下
[解决办法]
这需要一步步跟踪counter
[解决办法]
另外counter未初始化,或者是filename空间不足,也有可能造成这种奇怪的问题。
[解决办法]
断点调试 是每个程序必要掌握的技能!!