IIC2333 / foro-2019-1

Foro oficial del curso IIC2333 - Sistemas Operativos y Redes, semestre 2019-1.
2 stars 0 forks source link

Dudas punteros type "FILE " #97

Closed LuisFros closed 5 years ago

LuisFros commented 5 years ago

Segun entiendo viendo el codigo fuente de la estructura FILE, tiene los siguientes punteros que son claves para su funcionamiento:

char *_IO_read_ptr;        /* Current read pointer */`
char *_IO_read_end;        /* End of get area. */
char *_IO_read_base;        /* Start of putback+get area. */
char *_IO_write_base;        /* Start of put area. */
char *_IO_write_ptr;        /* Current put pointer. */
char *_IO_write_end;        /* End of put area. */
char *_IO_buf_base;        /* Start of reserve area. */
char *_IO_buf_end;        /* End of reserve area. */

Cuandro abro un archivo binario en modo "r+b", que es el modo de escritura y lectura , pierdo referencia de mi puntero al escribir. Fijandome en el puntero del disco, los valores de IO_write_ptr y IO_read_ptr son distintos. Esto es porque estoy utilizando fread() y se mueve el puntero de lectura. Al momento de escribir con fwrite(), el puntero IO_write_ptr esta en una posicion distinta y no logro escribir donde quiero. En este caso como debo manejar el puntero con fseek() , fread() y fwrite() para evitar este problema? Que efecto tiene fseek() sobre los punteros de lectura y escritura?

cruz commented 5 years ago

Hola Luis, No estoy seguro si entiendo bien tu consulta.

¿Esto es para manipular los contenidos del simdisk.bin, y por eso lo abres como rb+?

cruz commented 5 years ago

Por ejemplo, si intentas leer 1 byte, y luego escribes 1 byte, ¿en qué parte del archivo se hace la escritura?

LuisFros commented 5 years ago

Hola, Perdon por la confusa redaccion,

La verdad es que no entiendo porque fue necesario hacer esto para que funcione.