Посимвольное считывание из файла - в конце строки появляется символ "Я" - C (СИ)
Формулировка задачи:
Здравствуйте! Который раз сталкиваюсь с этой проблемой!
Нужно считать информацию из файла и вывести её на экран.
Всё считывает и выводит, НО в конце на экране появляется буква Я
в этом примере их появилось аж 41 шт...--- что это? почему появляется и как это подавить?
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<windows.h>
#define N 250
int main()
{
system("chcp 1251 > NULL");
char len[N];
int i=0;
FILE *str=fopen("test.txt", "rt");
do {
len[i]=fgetc(str);
fputc(len[i],stdout);
i++;
} while(len[i]!=EOF);
return 0;
}Решение задачи: «Посимвольное считывание из файла - в конце строки появляется символ "Я"»
textual
Листинг программы
while(len[i]!=EOF) { // проверяем предыдущее значение в массиве(кстати откуда оно взялось при первом заходе в цикл?)
i++; // идем к следующему элементу массива
len[i]=fgetc(str); // читаем в него
fputc(len[i],stdout); // выводим его
};
Объяснение кода листинга программы
- В цикле while происходит посимвольное считывание из файла до тех пор, пока не достигнется конец файла (EOF).
- Переменная
iиспользуется как индекс для массиваlen. - Значение
len[i]получается с помощью функции fgetc, которая считывает следующий символ из файла. - Считанный символ выводится на экран с помощью функции fputc.
- Значение
len[i]увеличивается на единицу после каждого прохода цикла, так как переменнаяiувеличивается на единицу после каждого прохода цикла. - В начале цикла, значение
len[i]не равно EOF, поэтому цикл выполняется. - Когда достигается конец файла, значение
len[i]становится равным EOF, и цикл прекращается.