Я пытаюсь прочитать файл по одной строке за раз, распечатать эту строку, а затем проанализировать каждый символ, чтобы определить, что с ним делать (весь анализ выполняется в драйвере, пометить его как ошибку, еслисимвол - это что угодно, кроме буквы или цифры)
Мой текущий входной файл:
Hello$ is
asd
Так вот, что я делаю, чтобы читать по одной строке за раз:
char GetSourceChar() {
char line[MAXLINE];
if (changeLine == 1) {
if (fgets(line, sizeof line, file) != NULL) {
char str1[10];
sprintf(str1,"%d", row); // convert int to 'string'
printf("[");
printf(str1);
printf("] ");
fprintf(outFile, "%s", "[");
fprintf(outFile, "%s", str1);
fprintf(outFile, "%s", "] ");
printf("%s", line);
fprintf(outFile, "%s", line);
changeLine = 0;
}
}
char c = line[col];
if (c == '\r'){
changeLine = 1;
row++;
col = 0;
}
col++;
return c;
}
И вот мой вывод:
[0] hello$ hi
^
Incorrect Character
[1] asd
Это именно то, что я хочу, чтобы он выглядел, но если я изменю свой входной файл на хотя бы одно слово дольше, он не будет работать?Я замечаю, что ошибка возникает, когда я говорю
char c = line[col]
Она не возвращает правильный символ, только \ 000, поэтому после этого ничего не работает правильно.
Есть мысли?