Duda sobre manejo de ficheros

Iniciado por тαптяα, 7 Septiembre 2011, 12:57 PM

0 Miembros y 1 Visitante están viendo este tema.

тαптяα

nose porque pero me estoy liando muchisimo con fopen y los modos de escritura.

Quiero modificar todo lo que viene dentro de un fichero, y luego escribir al principio del mismo, sin borrarlo.
Con fseek y como 3er parametro SEEK_SET

pero el problema es que si abro el archivo con w+ se me borra todo

Alguien me aclara.

Queta

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

тαптяα

Ya Queta, pero el caso es que lo escribe sin modificar al final del archivo. Como lo utilizo con Fseek para que pueda escribirlo al principio?

Gracias

Queta

#3
Claro, en el principio del archivo, perdón; estás utilizando w+ y como consecuencia se borra el antiguo archivo y se crea uno con el mismo nombre. w+:

CitarCreate an empty file for both reading and writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file.

Debes hacerlo con r+.
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

тαптяα

El problema es que con r+ no puedo modificar el archivo, solo lo lee..

rir3760

El modo "r+" permite operaciones de lectura y escritura. Antes de realizar la operación "secundaria" (escritura) debes indicar explícitamente la posición en el archivo mediante "rewind" o "fseek".

Un detalle por lo que comentas es que estas tratando con un archivo de texto, utilizando funciones como fgets/fprintf, ¿Eso es correcto?

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

тαптяα

Cita de: rir3760 en  8 Septiembre 2011, 21:50 PM
El modo "r+" permite operaciones de lectura y escritura. Antes de realizar la operación "secundaria" (escritura) debes indicar explícitamente la posición en el archivo mediante "rewind" o "fseek".

Un detalle por lo que comentas es que estas tratando con un archivo de texto, utilizando funciones como fgets/fprintf, ¿Eso es correcto?

Un saludo
fprintf, si voy a ver si indicando con fseek el comienzo del archivo puedo modificarlo sin problemas

Muchas gracias.