В выводе появился мусорный символ - C (СИ)
Формулировка задачи:
Программа принимает аргументами текстовые файлы, содержимое которых выводит на экран.
При выводе содержимого файла на экран, в конце всегда присутствует мусорный символ. Не могу найти причину
#include <stdio.h> #include <errno.h> #include <assert.h> #include <stdlib.h> void printfile(char *file); int main(int argc, char *argv[]) { if (argc==1) { fprintf(stderr, "usage: printfiles file1 [file2 ...]\n file1, file2, etc.: files to print\n"); exit(EINVAL); } int i; for (int i = 1; i < argc; ++i) { printfile(argv[i]); } exit(0); return 0; } void printfile(char *file){ assert(file!=NULL); FILE *fp = fopen(file, "rb"); if (!fp) { fprintf(stderr, "Can't open input file %s!\n", file); exit(ENOENT); } char buff; while (!feof(fp)){ buff = fgetc(fp); printf("%c", buff); } printf("\n"); fclose(fp); }
Решение задачи: «В выводе появился мусорный символ»
textual
Листинг программы
while (1){ buff = fgetc(fp); if (feof(fp)) break; printf("%c", buff); }
Объяснение кода листинга программы
В данном коде выполняется считывание данных из файла в буфер (переменная buff) с помощью функции fgetc(). Затем, если достигнут конец файла (проверка feof()), выполняется выход из цикла while с помощью оператора break. В противном случае, содержимое буфера выводится на экран с помощью функции printf(). В качестве аргумента передается символ, считанный из файла (buff).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д