Как в си без блокировки читать с потока ввода?
Я хочу посимвольно прочитать поток ввода. Я хочу сделать это с помощью getc, но проблема в том, что по достижению последнего символа getc просто блокирует поток выполнения, а не возвращает EOF, как в случае с файлом. Как сделать так, что при отсутствии данных в потоке getc или getchar не блокировали поток. Программа должна запускатсья как на виндовс, так и на линукс, по этому дескрипторы unix, который можно сделать неблокирущими и функция read не подходят.
Ответы (1 шт):
Автор решения: Sergey
→ Ссылка
по достижению последнего символа getc просто блокирует поток выполнения, а не возвращает EOF
Вы уверены? А вот если выполнить man 3 getc то мы увидим нечто прямо противоположное:
ОПИСАНИЕ
Функция fgetc() считывает очередной символ из потока stream и возвращает unsigned char
преобразованный в int, или EOF при достижении конца файла или при возникновении ошибки.