Как реализовать (char -ready?) в C

В настоящее время я реализую схему R5RS на C, и я застрял, пытаясь реализовать функцию (char-ready?).

У меня есть спецификации для функции, цитируемой ниже. Функция гарантированно не заблокируется. Стандартные функции C, такие как fgetc (), все блокируют ввод при вызове, когда ввод не готов. Мой тип входного потока - ФАЙЛ *, который может быть стандартным вводом или файлом, открытым с помощью fopen ().

(готовность символов?) Процедура

(готовность символов? Порт) процедура

Возвращает #t, если символ готов на входном порту и в противном случае возвращает #f. Если char-ready возвращает #t, то следующая операция чтения char на данном порту гарантированно не зависнет. Если порт находится в конце файла, то готов для char? возвращает #t. Порт может быть опущен, и в этом случае по умолчанию используется значение, возвращаемое current-input-port.

Обоснование:

Char-ready? существует, чтобы программа могла принимать символы из интерактивных портов, не застревая в ожидании ввода. Любые редакторы ввода, связанные с такими портами, должны гарантировать, что символы, существование которых было подтверждено char-ready? не стирается. Если готово? должны были вернуть #f в конце файла, порт в конце файла будет неотличим от интерактивного порта, в котором нет готовых символов.

8
задан Kara 24 June 2013 в 18:56
поделиться