Почему за выводом не может следовать ввод и наоборот? - PullRequest
0 голосов
/ 29 августа 2018

от APUE

Когда файл открыт для чтения и записи (знак плюс в типе) применяются два ограничения.

• За выходом нельзя сразу следовать без промежуточные fflush, fseek, fsetpos или rewind.

• За входом непосредственно не следует вывод без промежуточный fseek, fsetpos или rewind, или операция ввода, которая встречает конец файла.

Почему в обоих случаях «fseek, fsetpos или rewind»?

Почему "операция ввода, которая встречает конец файла" во втором случае?

Спасибо.

Аналогичный вопрос для Linux API: Может ли `read ()` сопровождаться непосредственно `write ()` и `write ()` `read ()`?

1 Ответ

0 голосов
/ 29 августа 2018

При работе с потоком FILE для чтения или записи в файл используется один внутренний буфер.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...