Вместо содержимого файла выводятся крокозябры - C (СИ)
Формулировка задачи:
Здравствуйте! У меня проблема, когда я хочу считать данные с файла и вывести их на экран, вместо содержимого файла выводятся крокозябры (смайлики), подскажите в чем моя ошибка.
int main(int argc, char *argv[]) { setlocale(LC_ALL, NULL); FILE *in; int ch; if ((in = fopen("1.txt", "r")) != NULL) { while ((ch = getc(in) != EOF)) { putc(ch, stdout); } fclose(in); } else { } system("PAUSE"); return 0; }
Решение задачи: «Вместо содержимого файла выводятся крокозябры»
textual
Листинг программы
while ((ch = getc(in)) != EOF)
Объяснение кода листинга программы
- Входные данные:
in
- файловый поток, связанный с файлом, который необходимо прочитатьch
- переменная типаchar
, которая будет использоваться для хранения очередного символа из файлаEOF
- константа, обозначающая конец файла
- Тело цикла
while
:getc(in)
- функция, которая считывает следующий символ из файла и сохраняет его в переменнойch
ch != EOF
- условие цикла, которое проверяет, что считанный символ не является последним в файле
- Вывод:
- В данном случае вместо вывода на экран используется стандартный поток ошибок (
stderr
), на который выводятся предупреждения и ошибки fprintf(stderr,
Крокозябры\n);
- функция, которая выводит на стандартный поток ошибок строкуКрокозябры
Таким образом, код считывает каждый символ из файла до его конца и выводит на экран строкуКрокозябры
для каждого считанного символа.
- В данном случае вместо вывода на экран используется стандартный поток ошибок (
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д