Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ZedGe en 7 Diciembre 2012, 04:23 am



Título: Escribir txt al final en c++
Publicado por: ZedGe en 7 Diciembre 2012, 04:23 am
He estado buscando códigos aca de c++ para lograr escribir al final de un fichero txt en c++, pero solo he encontrado los códigos que leen desde el principio, alguien tiene el código?

gracias


Título: Re: Escribir txt al final en c++
Publicado por: x64core en 7 Diciembre 2012, 10:26 am
He estado buscando códigos aca de c++ para lograr escribir al final de un fichero txt en c++, pero solo he encontrado los códigos que leen desde el principio, alguien tiene el código?

gracias

Para WIndows? Si lo es, entonces, usar Win32:
SetFilePointer  (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365541(v=vs.85).aspx)

Lee un poco sobre la documentacion de tal funcion, es muy sencilla, más o menos seria obtener el handle al archivo/leer archivo,
obtener el tamaño del archivo (GetFileSize  (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364955(v=vs.85).aspx), a la hora de leer el
archivo la funcion devuelve un puntero al inicio del buffer donde se almacenan los bytes del archivo leido, luego usa SetFilePointer, MainPointer + SIzeOfFile.


Título: Re: Escribir txt al final en c++
Publicado por: leosansan en 7 Diciembre 2012, 14:02 pm
He estado buscando códigos aca de c++ para lograr escribir al final de un fichero txt en c++. . .
Citar
Modo de apertura de un fichero:
" a  ": Añade al final del fichero si existe, o lo crea si no existe. ejemplo:

                    fopen(nombre, "ra")

No estoy seguro si te referías a esto. Si no es así concreta más la pregunta.
Saluditos!.


Título: Re: Escribir txt al final en c++
Publicado por: rir3760 en 7 Diciembre 2012, 15:32 pm
He estado buscando códigos aca de c++ para lograr escribir al final de un fichero txt en c++, pero solo he encontrado los códigos que leen desde el principio, alguien tiene el código?

Indicas el modo append (agregar) cuando abres el archivo. Un ejemplo en la pagina cortesía de C Plus Plus: std::fstream::open (http://www.cplusplus.com/reference/fstream/fstream/open/).

Un saludo


Título: Re: Escribir txt al final en c++
Publicado por: ZedGe en 7 Diciembre 2012, 15:50 pm
gracias me ha funcionado


Título: Re: Escribir txt al final en c++
Publicado por: zikotik en 8 Diciembre 2012, 14:21 pm
Intenta lo siguiente:...

Código:
#include <stdio.h>

FILE* archivo;

int main()
{
    archivo = fopen("archivo.txt", "a+");
    fprintf(archivo, "%s", "Esta es la ultima linea\n");
    fclose(archivo);
}

Y recuerdate los siguientes permisos:

Código:
r      lee el archivo.
w      reemplaza el contenido del archivo por otro texto.
rw     lee y reemplaza el texto del archivo por otro.
w+     agrega un texto al final del archivo.
a+     es lo mismo que w+.

Con que recuerdes sólo ésos, es suficiente, aunque si manejas PHP, lo vas a entender seguramente.


Título: Re: Escribir txt al final en c++
Publicado por: rir3760 en 8 Diciembre 2012, 16:49 pm
Si esta aprendiendo C++ me parece mejor que se enfoque en su biblioteca estándar (función miembro open) y no la de C (función fopen).

Con esta ultima los modos de apertura son tres:

1) "r" para lectura
2) "w" para escritura (el contenido original se pierde)
3) "a" para escritura agregando al final del archivo.

De forma predeterminada la apertura es en modo texto o bien se puede indicar explícitamente con "t". Para el modo binario se debe utilizar "b".

Si se utiliza "+" con alguno de los tres modos ello permite realizar la otra operación:

1) "r+" para lectura y escritura
2) "w+" para escritura (se pierde el contenido original) y lectura.
3) "a+" para escritura (siempre al final del archivo) y lectura.

En todos los casos antes de realizar la operación secundaria (la que se agrega al utilizar "+") se debe indicar la posición en el archivo mediante la función fseek o rewind.

Un saludo


Título: Re: Escribir txt al final en c++
Publicado por: zikotik en 8 Diciembre 2012, 20:16 pm
El fstream es mucho mejor que fopen, éso es verdad.
Yo sólo puse lo del fopen no más porque me parecía un poco más sencillo como para empezar si es que no había visto C anteriormente.