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種類の境界のうち 'チャー[81]'
p4.c:93:22:ランタイムエラー:タイプの境界のうちインデックス81 'のchar [81]'
セグメンテーションエラー
注:私の入力ファイルには上記のエラーチェックによるデータが含まれています。私は各行を最大80文字で\ n、識別子の最大サイズは10であることを意味します。 '#'またはスペースまたはタブで始まらない行には、行の先頭に ' : '最大サイズが10の場合': '
上記のコードで2番目のループで起きていますか? このエラーが発生するのはなぜですか?
p.s:私はすでに私のファイルを開いて、あなたはカウンターi
をリセットしたことがないと識別子にターミネータを追加していない私の主な方法
'(feof(fp)){ fgets(lines、80、fp);' feof()は常に間違っているhttp://stackoverflow.com/q/5431941/905902 – wildplasser
これを修正する方法は? –
feof()を削除し、代わりにfgets()の戻り値を使用します。 – wildplasser