Deshacer los efectos de ungetc (): “¿Cómo” lo hacen fseek (), rewind () y fsetpos ()? ¿Se rellena el búfer cada vez?

¡¡Eh !! ¡¿Cómo debo poner todo esto en una pregunta clara? Déjame intentarlo:

Sé que los archivos se abren usandofopen() están almacenados en la memoria. Usamos un búfer para mayor eficiencia y facilidad. Durante una lectura del archivo, el contenido del archivo se lee primero en el búfer, y leemos desde ese búfer. De manera similar, al escribir en el archivo, Los contenidos se escriben primero en el búfer y luego en el archivo.

Pero que confseek(),fsetpos() yrewind()goteante El efecto de las llamadas anteriores aungetc()? Usted pude decirmecómo ¿Está listo? Quiero decir, dado que hemos abierto un archivo para leerlo y se copia en el búfer. Ahora usandoungetc() hemos cambiado algunos caracteres en el búfer. Aquí es lo que no logro entender, incluso después de mucho esfuerzo:

Esto es lo que se dijo sobre elungetc() -"Una llamada a fseek, fsetpos o rebobinar en secuencia descartará cualquier carácter que se haya vuelto a poner con esta función". - ¿Cómo pueden descartarse los caracteres que ya están en el búfer? Un enfoque es que los caracteres originales que se eliminaron se "recuerdan", y cada nuevo carácter que se introdujo se identifica y se reemplaza por el original. Pero parece muy ineficiente. La otra opción es cargar una copia del archivo original en el búfer y colocar el puntero del archivo en la posición deseada. ¿Qué enfoque de estos dos toma fseek, fsetpos o rebobinado para descartar los caracteres puestos?ungetc()?

Para las secuencias de texto, ¿de qué manera la presencia de caracteres no leídos en la secuencia, los caracteres que se pusieron en uso?ungetc(), afectan el valor de retorno deftell()? Mi confusión surge de la siguiente línea acerca deftell() yungetc() de este enlace sobreftell(FUENTE)

"Para las secuencias de texto, el valor numérico puede no ser significativo, pero aún puede usarse para restaurar la posición a la misma posición más tarde usando fseek (Si hay caracteres que se han vuelto a poner utilizando ungetc que aún están pendientes de ser leídos, el comportamiento no está definido.). "

Centrándose en la última línea del párrafo anterior, lo que tienepending of being read ¿Tiene que ver con un carácter "ungetc () - obtenido" que se descarta? Cada vez que leemos un personaje que fue puesto en la corriente usandoungetc(),Lo esdescartado despues de la lectura?

Respuestas a la pregunta(2)

Su respuesta a la pregunta