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

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


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

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

10   голосов , оценка 4 из 5
Похожие ответы