Посимвольное считывание из файла - в конце строки появляется символ "Я" - 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, и цикл прекращается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д