При выводе из файла добавляется лишний символ - C (СИ)

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

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

Есть содержимое файла:
Листинг программы
  1. 12345
  2. Once I caught a fish alive
  3. 45678910
  4. Then I let it go again
  5. 111213314
Код выводит это содержимое в таком виде:
Листинг программы
  1. 12345
  2. Once I caught a fish alive
  3. 45678910
  4. Then I let it go again
  5. 111213314
  6. я
Откуда берется эта проклятая буква "я"? Она создает дополнительную строку, дополнительный символ, который просто не дает мне дальше работать с программой, помогите, пожалуйста
Листинг программы
  1. #define N 5
  2. #define M 45
  3. int main()
  4. {
  5. setlocale(LC_ALL,"Russian");
  6. char ch[N][M];
  7. int i = 0, j = 0, d = 0, max = 0, k, m, c, k2, m2;
  8. FILE *file;
  9. file = fopen("c:\\1text.txt","r");
  10. while (!feof(file))
  11. {
  12. ch[i][j] = getc(file);
  13. putchar(ch[i][j]);
  14. if (ch[i][j] != '\n')
  15. j++;
  16. else
  17. {
  18. i++;
  19. j = 0;
  20. }
  21. }
  22. fclose(file);
  23. printf ("\n");
  24. }

Решение задачи: «При выводе из файла добавляется лишний символ»

textual
Листинг программы
  1. while (1)                
  2. {  
  3.     if((ch[i][j] = getc(file)) == EOF)
  4.         break;
  5.     putchar(ch[i][j]);
  6.     if (ch[i][j] != '\n')
  7.         j++;
  8.     else
  9.     {
  10.         i++;
  11.         j = 0;
  12.     }
  13. }

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

В данном коде выполняется чтение из файла посимвольно и его вывод на экран. При этом, если текущий символ не является символом новой строки, то он выводится на экран, а значение переменной j увеличивается на единицу. Если текущий символ является символом новой строки, то значение переменной i увеличивается на единицу, а значение переменной j сбрасывается на ноль. Данный процесс повторяется до тех пор, пока из файла не будет достигнут конец.

  1. Объявлены две массивы символов ch[i][j].
  2. В условии цикла while (1) выполняется проверка на условие break.
  3. В каждой итерации цикла происходит чтение символа из файла с помощью функции getc(file) и его сохранение в массиве ch[i][j].
  4. Выводится символ из массива ch[i][j] с помощью функции putchar().
  5. Если символ не является символом новой строки, то значение переменной j увеличивается на единицу.
  6. Если символ является символом новой строки, то значение переменной i увеличивается на единицу, а значение переменной j сбрасывается на ноль.

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


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

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

13   голосов , оценка 4.077 из 5

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

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

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