¿Por qué una salida no puede ser seguida por una entrada y viceversa?

De APUE

Cuando se abre un archivo para leer y escribir (el signo más en el tipo), se aplican dos restricciones.

• La salida no puede ser seguida directamente por la entrada sin un flujo intermedio, fseek, fsetpos o rebobinado.

• La entrada no puede ser seguida directamente por la salida sin un fseek, fsetpos o rebobinado intermedio, o una operación de entrada que encuentra un final de archivo.

¿Por qué "fseek, fsetpos o rewind" en ambos casos?

¿Por qué "una operación de entrada que encuentra un final de archivo" en el segundo caso?

Gracias

Una pregunta similar para la API de Linux es ¿Puede `leer ()` ir directamente seguido de `escribir ()` y `escribir ()` por `leer ()`?

Respuestas a la pregunta(1)

Su respuesta a la pregunta