Escribir txt al final en c++

Iniciado por ZedGe, 7 Diciembre 2012, 04:23 AM

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

ZedGe

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

x64core

Cita de: 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

Para WIndows? Si lo es, entonces, usar Win32:
SetFilePointer

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 , 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.

leosansan

Cita de: 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++. . .
CitarModo 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!.

rir3760

Cita de: ZedGe en  7 Diciembre 2012, 04:23 AMHe 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.

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

ZedGe


zikotik

Intenta lo siguiente:...

#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:

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.

rir3760

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
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

zikotik

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.