Как в си без блокировки читать с потока ввода?

Я хочу посимвольно прочитать поток ввода. Я хочу сделать это с помощью getc, но проблема в том, что по достижению последнего символа getc просто блокирует поток выполнения, а не возвращает EOF, как в случае с файлом. Как сделать так, что при отсутствии данных в потоке getc или getchar не блокировали поток. Программа должна запускатсья как на виндовс, так и на линукс, по этому дескрипторы unix, который можно сделать неблокирущими и функция read не подходят.


Ответы (1 шт):

Автор решения: Sergey

по достижению последнего символа getc просто блокирует поток выполнения, а не возвращает EOF

Вы уверены? А вот если выполнить man 3 getc то мы увидим нечто прямо противоположное:

ОПИСАНИЕ
       Функция  fgetc()  считывает  очередной  символ  из  потока  stream  и возвращает unsigned char
       преобразованный в int, или EOF при достижении конца файла или при возникновении ошибки.
→ Ссылка