Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: тαптяα en 7 Septiembre 2011, 12:57 pm



Título: Duda sobre manejo de ficheros
Publicado por: тαптяα en 7 Septiembre 2011, 12:57 pm
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.


Título: Re: Duda sobre manejo de ficheros
Publicado por: Queta en 7 Septiembre 2011, 13:07 pm
Lee toda la referencia:

http://www.cplusplus.com/reference/clibrary/cstdio/fopen/ (http://www.cplusplus.com/reference/clibrary/cstdio/fopen/)

Fíjate en el parámetro a/a+.


Título: Re: Duda sobre manejo de ficheros
Publicado por: тαптяα en 7 Septiembre 2011, 13:09 pm
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


Título: Re: Duda sobre manejo de ficheros
Publicado por: Queta en 7 Septiembre 2011, 13:13 pm
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+:

Citar
Create 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+.


Título: Re: Duda sobre manejo de ficheros
Publicado por: тαптяα en 8 Septiembre 2011, 20:40 pm
El problema es que con r+ no puedo modificar el archivo, solo lo lee..


Título: Re: Duda sobre manejo de ficheros
Publicado por: 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


Título: Re: Duda sobre manejo de ficheros
Publicado por: тαптяα en 8 Septiembre 2011, 22:06 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.