Вместо содержимого файла выводятся крокозябры - 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)- функция, которая считывает следующий символ из файла и сохраняет его в переменнойchch != EOF- условие цикла, которое проверяет, что считанный символ не является последним в файле
- Вывод:
- В данном случае вместо вывода на экран используется стандартный поток ошибок (
stderr), на который выводятся предупреждения и ошибки fprintf(stderr,Крокозябры\n);- функция, которая выводит на стандартный поток ошибок строкуКрокозябрыТаким образом, код считывает каждый символ из файла до его конца и выводит на экран строкуКрокозябрыдля каждого считанного символа.
- В данном случае вместо вывода на экран используется стандартный поток ошибок (