В выводе появился мусорный символ - 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).