Pb enregistrement dans un fichier (C++)

Fermé
essalah Messages postés 3 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 29 mai 2003 - 29 mai 2003 à 15:06
 pouet - 29 mai 2003 à 18:40
Bonjour
Voila je debute en C++. J'ai une classe produit
la fonction main demande a l'utilisateur de taper des informations concernant un produit
//-----------------------------main()--------------------------------

void main()
{
FILE* fp =fopen("ficproduit.txt","rb+");
if (! fp)
fp = fopen("ficproduit.txt","wb");
char* a;
float b;
int c;
char d[10];
char e[100];
cout << "\t\t###############################\n";
cout << "\t\t# #\n";
cout << "\t\t# ENREGISTREMENT DES PRODUITS #\n";
cout << "\t\t# #\n";
cout << "\t\t###############################\n";
cout << "\n\nRentrer le nom du produit :"<< flush;
cin >> a;
cout << "\nRentrer le prix de ce produit : " << flush;
cin >> b;
cout << "\nRentrer la quantite a rentrer:" << flush;
cin >> c;
cout << "\nRentrer la date d'entre de ce produit : " << flush;
cin >> d;
cout << "\nRentrer les caracteristiques de ce produit : " << flush;
cin >> e;

produit* p=new produit(a, b, c, d, e);

p->inserer();
system("cls");
p->affiche();
system("pause");

}

//--------------------------fin main()-------------------------------

la metode inserrer() inserrer les données dans un fichier ficproduit
//----------------------------inserrer()--------------------------------
void produit::inserer()
{
FILE* fp =fopen("ficproduit.txt","rb+");
char p;
produit::numero= ftell(fp)/sizeof(produit) + 1;
fwrite(&p,sizeof(p),1,fp);

fclose(fp);
}
//------------------------fin inserrer()---------------------------------
et la methode affiche accede au fichier et affiche son contenu
//--------------------------affiche()-----------------------------
void produit::affiche()

{
FILE* fp =fopen("ficproduit.txt","rb");
char p;
cout << "\t\t############################\n";
cout << "\t\t# #\n";
cout << "\t\t# AFFICHAGE DES PRODUITS #\n";
cout << "\t\t# #\n";
cout << "\t\t############################\n\n\n";
fread (&p, sizeof(p), 1, fp);
cout <<"Libelle : " <<produit.Libelle
<<"\nPrix de vente : " <<produit.prix <<" Euro"
<<"\nQuantite : " << produit.quantite
<<"\nDate d'entre : " <<produit.date_entre
<<"\nCaracteristiques: " <<produit.caracterestique
<<"\nMontant Total : " << produit.prix*produit.quantite <<" Euro"
<<"\n" << endl;
fclose (fp);
}

//------------------------fin affiche()---------------------------

Voila je sais que je confend un peu la notion de structure (en C)classe(en C++):quand j'ecris produit.pté. Mais je sais pas comment faire.
Merci de bien vouloir m'aider. Au secours!!!

3 réponses

batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
29 mai 2003 à 15:19
théoriquement, on ne met jamais de donnée publique : pour modifier une donnée, tu dois fournir l'accesseur et le mutateur correspondant (en anglais getter et setter).
@++

Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
0
essalah Messages postés 3 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 29 mai 2003
29 mai 2003 à 16:08
Excusez moi mais j'ai rien compris. comment je fais pour que l'insertion dans un fichier marche et que je puisse faire l'affichage depuis ce fichier par la suite.
0
essalah Messages postés 3 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 29 mai 2003
29 mai 2003 à 15:30
Excusez moi mais j'ai rien compris. comment je fais pour que l'insertion dans un fichier marche et que je puisse faire l'affichage depuis ce fichier par la suite.
0
bonjour,

deux trois remarques:
pas de \n en C++, lui preferer std::endl;
ensuite une struct et une class c est la meme chose, a ce ci pres que les elements de la class sont prives par defaut, et que ceux de la struct sont publiques.
enfin, il est sympatique de respecter certaines conventions du genre une majuscule au debut du nom de la classe, des atrtributs precedes de _. ce n est qu une convention, mais cela simplifie la lecture du code.

pour ton probleme, le mieux est de surcharger l operateur >> pour la classe produit. un truc du genre:
inline std::ostream&
operator<< (std::ostream &ostr, const Produit &my_produit)
{
return ostr << my_produit.get_.... ();
}

et ici, un exemple pour ecrire dans un fichier en c++:
http://tonioc.free.fr/Trucs/editruc.php3?idart=125&pers=anonyme

voila.

--
pouet
0