PDA

Ver la Versión Completa : Ficheros


leireiresaio
02-05-2005, 12:22:59
Hola!!!

Tenemos problemas a la hora de hacer un fichero en "Borland C++ Builder 5". No sabemos como meter la información en un fichero. Nos gustaria que nos recomendaseis que tipo de fichero utilizar. No estaria mal que nos mandaseis un trozo de código de ejemplo.

Gracias!!! Un saludo.

Crandel
16-05-2005, 08:06:34
Los archivos de escritura son los ofstream , tenes que declarar una variable de ese tipo, por ejemplo:


ofstream ArchiSal("salida.txt");


un ejemplo con escribiendo bastantes boludeces :D

ofstream ArchiSal("salida.txt");
string Texto1 = "Hola";
string Texto2 = "Mundo";
int num = 1;
Archi << Texto1 << Texto2 << endl;
Archi << Texto1 << " " << Texto2 << endl;
Archi << num << num++ << endl;
Archi << num << " " << num++ << endl;
Archi << num++ << " " << num << endl;
Archi << Texto1 << num << "\n";
Archi << num++ << Texto2 << endl;


Al final, podes llamar al método close() si queres, igualmente este se llama al destruir la varaible

Para lectura ifstream .


float PromedioDatos()
{
float x, suma = 0;
int cont = 0;
ifstream Archivo(“Datos.txt”);
while (!Archivo.eof())
{
Archivo >> x;
suma += x;
cont++;
}
return suma/cont;
}


Espero que te sirva para empesar :p

alt126
20-05-2005, 12:32:21
Es que lo estoy probando y no me funciona!!

Gracias

Crandel
20-05-2005, 18:31:16
no lo probe esa versión, seguro que en la 5 y 6 funciona.

Si especificas que error te tira, cpaz te pueda ayudar.

mminorm
01-06-2005, 20:24:18
Prueba este otro codigo, imagino ke estas usando algun tipo de registro, lista enlazada o algo asi:

void nodo::guardar(void)//guarda en un fichero
{
nodo *AUX = NULL;
if (obj.l != NULL)
{
AUX = obj.l;//obj,l es un objeto ke contiene la cabeza de una lista enlazada
ofstream datos("fichero.txt");
if (!datos)
ShowMessage( "No se pudo abrir el archivo");
while (AUX != NULL)
{
//tienes ke declarar una variable por cada dato del registro
char nombre[15];
char apellido1[15];
char apellido2[15];
char cedula[10];
char telefono[15];
char celular[15];
char provincia[15];
StrCopy(nombre, AUX->info.nombre);
StrCopy(apellido1, AUX->info.apellido1);
StrCopy(apellido2, AUX->info.apellido2);
StrCopy(cedula, AUX->info.cedula);
StrCopy(telefono, AUX->info.telefono);
StrCopy(celular, AUX->info.celular);
StrCopy(provincia, AUX->info.provincia);
if (AUX!=NULL)
{
datos.write ((unsigned char *) & nombre, sizeof(nombre));
datos.write ((unsigned char *) & apellido1, sizeof(apellido1));
datos.write ((unsigned char *) & apellido2, sizeof(apellido2));
datos.write ((unsigned char *) & cedula, sizeof(cedula));
datos.write ((unsigned char *) & telefono, sizeof(telefono));
datos.write ((unsigned char *) & celular, sizeof(celular));
datos.write ((unsigned char *) & provincia, sizeof(provincia));
}
AUX = AUX->sig;
}
datos.close();
datos.close();
}
}
void nodo::cargar (void) //carga informacion desdel el fichero
{
persona p;//mi registro de informacion
ifstream datos ("fichero.txt");
obj.l=NULL;//recuerda ke obj.l es la cabeza de mi lista enlazada

if (!datos)
ShowMessage("No se pudo abrir el archivo");
else
{
do
{
//tienes ke cargar la informacion del archivo en cada dato del registro
datos.read ((unsigned char *) & p.nombre, sizeof(p.nombre));
datos.read ((unsigned char *) & p.apellido1, sizeof(p.apellido1));
datos.read ((unsigned char *) & p.apellido2, sizeof(p.apellido2));
datos.read ((unsigned char *) & p.cedula, sizeof(p.cedula));
datos.read ((unsigned char *) & p.telefono, sizeof(p.telefono));
datos.read ((unsigned char *) & p.celular, sizeof(p.celular));
datos.read ((unsigned char *) & p.provincia, sizeof(p.provincia));
if (!datos.eof())
obj.insertar(p);
}
while (!datos.eof());
}
datos.close();
datos.close();
}

espero t sirva, si no t funcionara me podrias decir ke clase de estructura estas utilizando. Estamos en contacto