Посимвольное считывание из файла - в конце строки появляется символ "Я" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Который раз сталкиваюсь с этой проблемой! Нужно считать информацию из файла и вывести её на экран. Всё считывает и выводит, НО в конце на экране появляется буква Я в этом примере их появилось аж 41 шт...--- что это? почему появляется и как это подавить?
Листинг программы
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<windows.h>
  5. #define N 250
  6.  
  7. int main()
  8. {
  9. system("chcp 1251 > NULL");
  10. char len[N];
  11. int i=0;
  12. FILE *str=fopen("test.txt", "rt");
  13. do {
  14. len[i]=fgetc(str);
  15. fputc(len[i],stdout);
  16. i++;
  17. } while(len[i]!=EOF);
  18.  
  19. return 0;
  20. }

Решение задачи: «Посимвольное считывание из файла - в конце строки появляется символ "Я"»

textual
Листинг программы
  1. while(len[i]!=EOF) {      // проверяем предыдущее значение в массиве(кстати откуда оно взялось при первом заходе в цикл?)
  2.     i++;                  // идем к следующему элементу массива
  3.     len[i]=fgetc(str);    // читаем в него
  4.     fputc(len[i],stdout); // выводим его
  5. };

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы