Посимвольное считывание из файла - в конце строки появляется символ "Я" - 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); // выводим его
};

Объяснение кода листинга программы

  1. В цикле while происходит посимвольное считывание из файла до тех пор, пока не достигнется конец файла (EOF).
  2. Переменная i используется как индекс для массива len.
  3. Значение len[i] получается с помощью функции fgetc, которая считывает следующий символ из файла.
  4. Считанный символ выводится на экран с помощью функции fputc.
  5. Значение len[i] увеличивается на единицу после каждого прохода цикла, так как переменная i увеличивается на единицу после каждого прохода цикла.
  6. В начале цикла, значение len[i] не равно EOF, поэтому цикл выполняется.
  7. Когда достигается конец файла, значение len[i] становится равным EOF, и цикл прекращается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы