В выводе появился мусорный символ - 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д