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 из оценок для типа 'символ [11]
p4.c: 92 : 17: ошибка во время выполнения: индекс 81 из оценок для типа 'символ [81]'
p4.c: 93: 22: ошибка: индекс 81 из оценок для типа 'символ [81]'
Ошибка сегментации
Примечание: Мой входной файл содержит данные в соответствии с вышеописанными ошибками. Я имею в виду, что каждая строка не более 80 символов, включая \ n, а максимальный размер идентификатора - 10. И строки, которые не начинаются с «#» или пробела или вкладки, содержат идентификатор в начале строки, который заканчивается символом ' : 'с максимальным размером 10, включая': '
Это происходит во втором цикле по вышеуказанному коду? Почему я получаю эту ошибку?
p.s: Я уже открыл файл и проверил его в мой основной метод
'while (! Feof (fp)) { fgets (lines, 80, fp);' feof() всегда ошибочен http://stackoverflow.com/q/5431941/905902 – wildplasser
Итак, как это исправить? –
удалите feof() и вместо этого используйте возвращаемое значение из fgets(). – wildplasser