【发布时间】:2017-04-04 03:48:32
【问题描述】:
void search(FILE *fp){
char lines[81];
char iden[11];
int i = 0;
int count = 1;
while(!feof(fp)){
fgets(lines,80,fp);
// If the line dosesn't start with #, space, or tab, it has identifier
if (lines[0] != '#' && lines[0] != ' ' && lines[0] != '\t'){
// An identifier ends with ':'
while (lines[i] != ':'){
iden[i] = lines[i];
++i;
}
ins(iden, count);
}
++count;
}
}
我收到这样的错误:
p4.c:93:12:运行时错误:索引 11 超出类型“char [11]”的范围
p4.c:92:17:运行时错误:索引 81 超出类型“char [81]”的范围
p4.c:93:22:运行时错误:索引 81 超出类型“char [81]”的范围
分段错误
注意:我的输入文件包含根据上述错误检查的数据。我的意思是每行最多 80 个字符,包括 \n,标识符的最大大小为 10。不以“#”或空格或制表符开头的行在以 ' 结尾的行开头包含一个标识符:' 最大大小为 10,包括 ':'
在上述代码的第二个 while 循环中发生了吗? 为什么会出现此错误?
p.s:我已经打开了我的文件并在我的 main 方法中检查了它
【问题讨论】:
-
while(!feof(fp)){ fgets(lines,80,fp);feof() 总是错误的stackoverflow.com/q/5431941/905902 -
那么如何解决呢?
-
移除 feof() 并使用 fgets() 的返回值。
标签: c file segmentation-fault runtime-error