Flushing fopen () 'ed archivos abiertos en modo de actualización, entre operaciones de lectura y escritura. ¿Se necesita un vaciado explícito?

He leído esto sobre el cambio entre las operaciones de lectura y escritura (y viceversa) para los archivos abiertos para actualización utilizandofopen() (ENLAZAR)

"Para los archivos abiertos para actualización (aquellos que incluyen un signo" + "), en los que se permiten tanto las operaciones de entrada como las de salida, la secuencia se debe vaciar (fflush) o reposicionar (fseek, fsetpos, rebobinar) entre una operación de escritura seguida por una operación de lectura o una operación de lectura que no llegó al final del archivo seguida de una operación de escritura ".

Aquí hay dos cosas que me gustaría resaltar.

el flujo debe ser lavado (fflush) o reposicionado (fseek, fsetpos, rebobinado)entre una operación de escritura seguida de una operación de lecturao una operación de lectura que no llegó al final del archivo seguida de una operación de escritura.

1) Respecto al primer punto, ¿nosexplícitamente Necesito hacer una descarga entre una operación de lectura y escritura. Quiero decir, supongamos que si pretendemos escribir en un archivo nuevo y luego leerlo de nuevo. En este caso usandofseek() orewind() para llegar al principio del archivo después de que la escritura tenga sentido, y como efecto secundario, vaciará el búfer. Pero lo que quiero saber es qué pasaría si estuviéramos actualizando / sobrescribiendo la primera parte de un archivo. archivo existente con nuevos datos, pero una vez hecho, queremosInmediatamente comience a leer los datos antiguos restantes de ese punto.¿Necesitamos usar algo comofseek(pFile,0,SEEK_CUR) para que vaciemos el búfer para elwrite-read transición, y al mismo tiempo, no cambia la posición del puntero del archivo? La misma confusión surge del segundo escenario también, cuando queremos leer la primera mitad de un archivo, yinmediatamente después de eso Quiero empezar a escribir allí. Por favor responde esto.

2) La segunda parte sobrereading operation which did not reach the end-of-file Parece implicar que si una operación de lectura llega al final del archivo y tenemos la intención de escribir después de eso, no necesitamos el búfer para vaciarlo.read-write Transición. ¿Puedes confirmarlo? ¿Eso es lo que significa?write-read Transición necesita enrojecimiento y noread-write transición, especialmente si la lectura ha llegado al final del archivo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta