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