#1 Problemas con programa c++
Tengo un problemita con este codigo, llamo al método alta_producto con las variables que estan en el main, y supuestamente guarda todo bien en un archivo binario. Luego cuando quiero ver los datos guardados mediante otro programita que hice para ver estos me tira un error y no me muestra nada. Para mi es un error cuando guarde los datos o algo parecido. Si alguien me puede ayudar mejor gracias.
#include <iostream>
#include <fstream>
using namespace std;
typedef struct {
string nombre,fecha_alta;
int codigo, stock;
float precio;} datos;
class producto{
datos datosp;
public:
void alta_producto (string n,string f, int s, float p);
void venta_producto (string c, int can);
void editar_producto (string n);
};
void producto::alta_producto (string n,string f, int s, float p){
fstream archi("D://producto.dat",ios::in|ios::binary|ios::out|ios::tr unc);
datos prod,aux;
int cod=0;
prod.nombre=n;
prod.fecha_alta=f;
prod.precio=p;
prod.stock=s;
archi.seekg(0,ios::end);
float i=archi.tellg();
if (i!=0){
archi.seekg((i-sizeof(prod)),ios::beg);
archi.read((char*)&aux,sizeof(prod));
cod=aux.codigo;
cod++;
prod.codigo=cod;
archi.seekg(0,ios::end);
archi.write((char*)(&prod),sizeof(datos));}
else {
cod++;
prod.codigo=cod;
archi.write((char*)(&prod),sizeof(prod));}
archi.close();
cout<<"listo";
}
int main(int argc, char *argv[]) {
producto h;
string n="coca";
string f="11";
int s=50;
float p=5.5;
h.alta_producto(n,f,s,p);
return 0;
}
#include <iostream>
#include <fstream>
using namespace std;
typedef struct {
string nombre,fecha_alta;
int codigo, stock;
float precio;} datos;
class producto{
datos datosp;
public:
void alta_producto (string n,string f, int s, float p);
void venta_producto (string c, int can);
void editar_producto (string n);
};
void producto::alta_producto (string n,string f, int s, float p){
fstream archi("D://producto.dat",ios::in|ios::binary|ios::out|ios::tr unc);
datos prod,aux;
int cod=0;
prod.nombre=n;
prod.fecha_alta=f;
prod.precio=p;
prod.stock=s;
archi.seekg(0,ios::end);
float i=archi.tellg();
if (i!=0){
archi.seekg((i-sizeof(prod)),ios::beg);
archi.read((char*)&aux,sizeof(prod));
cod=aux.codigo;
cod++;
prod.codigo=cod;
archi.seekg(0,ios::end);
archi.write((char*)(&prod),sizeof(datos));}
else {
cod++;
prod.codigo=cod;
archi.write((char*)(&prod),sizeof(prod));}
archi.close();
cout<<"listo";
}
int main(int argc, char *argv[]) {
producto h;
string n="coca";
string f="11";
int s=50;
float p=5.5;
h.alta_producto(n,f,s,p);
return 0;
}
0