Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Por que se me borran los datos del archivo.

Estas en el tema de Por que se me borran los datos del archivo. en el foro de C/C++ en Foros del Web. Hola, tengo un problema con este código en c++ con el que estoy trabajando, ingresar al menú y digitar los datos se guardan en el ...
  #1 (permalink)  
Antiguo 21/11/2012, 21:47
 
Fecha de Ingreso: noviembre-2012
Mensajes: 4
Antigüedad: 12 años
Puntos: 0
Por que se me borran los datos del archivo.

Hola, tengo un problema con este código en c++ con el que estoy trabajando, ingresar al menú y digitar los datos se guardan en el archivo, pero si me salgo y vuelvo a entrar se borra lo que dígito en el archivo, soy nueva en esto y agradecería todo la ayuda que me pueden brindar.

Aquí esta lo que medio hice(hay unas cosas que le faltan pero se las quite para que no se haga mucho enredo) ;


#include <iostream>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <stdio.h>
#include <iomanip>


using namespace std;

struct _suministro // Estructura
{
char name[80];
char cod[80];
char Unidad[80];
char cantMinima[80];
char cantMaxima[80];
char cantActual[80];
// Demas datos
// suministro;

}suministro;



int main()
{
int op,opi;
ofstream f;

f.open("archivo.txt", ios::out);
if (!f.is_open())
{
cout << "ERROR: no se puede abrir el fichero para escribir" << endl;
return 0;
}


cout<<" MENU PRINCIPAL "<<endl;
cout<<" SUMINISTROS E INVENTARIOS "<<endl<<endl;


cout<<" 3-- LISTAR LOS REGISTROS DE SUMINISTROS "<<endl;
cin>>op;

switch(op){
case 1:{

cout<<" SUBMENU DE INGRESO "<<endl<<endl;
cout<<" 1-- SUMINISTROS QUE NO EXISTEN (NUEVOS)"<<endl;
cout<<" 2-- SUMINISTROS SOLICITADOS POR PEDIDOS (YA EXISTEN)"<<endl;


}
break;
case 2:{

}
break;
case 3:{
cout<<" 3-- LISTAR LOS REGISTROS DE SUMINISTROS "<<endl;
cout<<"1-introducir nuevos"<<endl;
cout<<"2-mostrar anteriores"<<endl;
cin>>opi;

if(opi==1)
{


cout<< "SUMINISTROS"<<endl<<endl;

cout<< "Dijite el nombre;"<<endl;
cin>>suministro.name;
f.write(suministro.name,80);


cout<<" Dijite el codigo"<<endl;
cin>> suministro.cod;
f.write(suministro.cod,80);




cout<<" Dijite la unidad"<<endl;
cin>>suministro.Unidad;
f.write(suministro.Unidad,80);

cout<<" Dijite la cantidad minima"<<endl;
cin>>suministro.cantMinima;
f.write(suministro.cantMinima,80);



cout<<" Dijite la cantidad maxima"<<endl;
cin>> suministro.cantMaxima;
f.write(suministro.cantMaxima,80);

cout<<" Dijite la cantidad Actual"<<endl;
cin>>suministro.cantActual;

f.write(suministro.cantActual,80);


f.close();

}

if(opi==2) {


cout<<suministro.name,80;
cout<<suministro.cod,80;
cout<<suministro.Unidad,80;
cout<<suministro.cantMinima,80;
cout<<suministro.cantMaxima,80;
cout<<suministro.cantActual,80;
f.close();

}


}

break;
case 4:{


}
break;
default: {

cout<<"opcion incorrecta"<<endl;
}
break;


};


return 0;
}
  #2 (permalink)  
Antiguo 22/11/2012, 05:10
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Por que se me borran los datos del archivo.

Cuando abres el archivo lo haces en modo output sin mover el puntero de escritura al final del archivo, por eso siempre sobreescribe:

Código:
f.seekg (0, ios::end);
Otra solucion es abrir el archivo en modo append con ios::app, te ahorra mover el puntero de l/e

Saludos
vosk

Etiquetas: borran, int, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:34.