В выводе появился мусорный символ - C (СИ)

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

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

Программа принимает аргументами текстовые файлы, содержимое которых выводит на экран.
Листинг программы
  1. #include <stdio.h>
  2. #include <errno.h>
  3. #include <assert.h>
  4. #include <stdlib.h>
  5. void printfile(char *file);
  6. int main(int argc, char *argv[])
  7. {
  8. if (argc==1)
  9. {
  10. fprintf(stderr, "usage: printfiles file1 [file2 ...]\n file1, file2, etc.: files to print\n");
  11. exit(EINVAL);
  12. }
  13. int i;
  14. for (int i = 1; i < argc; ++i)
  15. {
  16. printfile(argv[i]);
  17. }
  18. exit(0);
  19. return 0;
  20. }
  21. void printfile(char *file){
  22. assert(file!=NULL);
  23. FILE *fp = fopen(file, "rb");
  24. if (!fp)
  25. {
  26. fprintf(stderr, "Can't open input file %s!\n", file);
  27. exit(ENOENT);
  28. }
  29. char buff;
  30. while (!feof(fp)){
  31. buff = fgetc(fp);
  32. printf("%c", buff);
  33. }
  34. printf("\n");
  35. fclose(fp);
  36. }
При выводе содержимого файла на экран, в конце всегда присутствует мусорный символ. Не могу найти причину

Решение задачи: «В выводе появился мусорный символ»

textual
Листинг программы
  1.     while (1){
  2.         buff = fgetc(fp);
  3.         if (feof(fp)) break;
  4.         printf("%c", buff);
  5.     }

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

В данном коде выполняется считывание данных из файла в буфер (переменная buff) с помощью функции fgetc(). Затем, если достигнут конец файла (проверка feof()), выполняется выход из цикла while с помощью оператора break. В противном случае, содержимое буфера выводится на экран с помощью функции printf(). В качестве аргумента передается символ, считанный из файла (buff).

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


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

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

10   голосов , оценка 4 из 5

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

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

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