Pb enregistrement dans un fichier (C++)
essalah
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
pouet -
pouet -
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!!!
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!!!
A voir également:
- Pb enregistrement dans un fichier (C++)
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
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 ?
@++
Vous hésitez entre Linux et Windows?
Vous voulez dépenser du temps ou de l'argent ?
essalah
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
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.
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.
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
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