Reservation de la memoire

khalid_trunks Messages postés 2 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 8 septembre 2005 - 8 sept. 2005 à 16:01
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 8 sept. 2005 à 16:42
salut ts le monde.
je debute en c++,j'ai fais une petite simple application( gestion d'appelles)....je sais po grand chose en c++.ben j'ai fais mon programme avc turbo c++.le probleme c que quand j'execute la fonction ajouter un enregistrement,cette derniere fonctionne po correctement,et quand je consulte ce que j'ai enregsiter sur un fichier je trouve pas ce que j'ai fais entrer....
voila mon code source(( c tres tres tres simple,je debute en c++
#include
#include<conio.h>
#include<fstream.h>
#include<stdlib.h>
class gestion
{public:
int num;



char* adresse;
char* nom;
char* prenom;
char* objet;
gestion(int,char*,char*,char*,char*);
void afficher();
void ajouter();
friend ostream &operator<<(ostream&,gestion);
friend istream &operator>>(istream&,gestion &);
} ;


gestion::gestion(int a,char *b,char *c,char *d,char *e)
{num=a;
nom=new char[20];
nom=b;
prenom=new char[20];
prenom=c;
adresse=new char[20];
adresse=d;
objet=new char[30];
objet=e;
}
void gestion::afficher()
{cout<<"*******************Etat**************************************"<<"\n";
cout<<"Numero d'appele :"<<num<<"\n";
cout<<"Nom :"<<nom<<"\n";
cout<<"Prenom :"<


ostream & operator<<(ostream & s,gestion p)
{s<>(istream & i,gestion &p)
{
i>>p.num>>"\n";


i>>p.nom>>"\n";


i>>p.prenom>>"\n";


i>>p.adresse>>"\n";


i>>p.objet>>"\n";
return(i);
}





void main()
{ clrscr();
gestion p(1,"khalid","trunks","rabat","excuse"),p1(0,"","","","");
int r;



char c='o';
/*while (c=='o')*/
do
{
cout<<"********************Gestion des appels*****************"<<"\n";
cout<<"\najouter un enregistrement :1";
cout<<"\nafficher sur ecran l'etat du parking :2";
cout<<"\nsauvegarder dans un fichier :3";
cout<<"\nsortir du menu :0";
cout<<"\nentrer votre choix :";
cout<<"\n***************************************************";
cin>>r;
switch(r)
{case 1:{ofstream khalid("songoku1.txt",ios::app);
cout<<"veuillez entrer les info:"<<"\n";
cin>>p1;


khalid<<"*******************Etat**************************"<<"\n";
khalid<<"Numero d'appel :"<


case 2:{p.afficher();break;}
case 3:{ofstream khalid("songoku.txt",ios::app);
if(!khalid){cout<<"fichier introuvable!"<<"\n";
getch();
exit(1);
}
khalid<<"*******************Etat**************************"<<"\n";
khalid<<"Numero d'appel :"<


}
cout<<"voulez vous continuer(o/n)?"<<"\n";
cin>>c; }
while(c=='o');


getch();
}

vous pouuriez facilement m'aider puisque vous programmez qlq chose bcp plus complique,j'aimerai tant atteindre votre exellent niveau
merci pour vos reponses
salut

2 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
8 sept. 2005 à 16:12
nom=new char[20];
nom=b;

> tu alloue un tableu et tu le stocke dans nom. Puis tu écrase le pointeur par nomb. Du coup :
1 - tu perd le pointer créé et tu pourras pas le détruire
2 - tu ne récupère pas le nom.

Pour recopier des chaînes de caractères, il faut utiliser :
strcpy(nom, b);

Ensuite, vu que tu fais des new, il faut faire des delete dand le destructeur de ta classe.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
8 sept. 2005 à 16:42
Alors si tu débutes en C++, tu vas me faire plaisir :) tu remplaces ca:

#include
#include<conio.h>
#include<fstream.h>
#include<stdlib.h>




par ca:



#include
#include<conio.h>
#include<fstream>
#include<cstdlib>

using namespace std;




Sinon, utilises des char seulement si ca a un but pédagogique :) sinon utilise le type string avec

#include <string>



...



string nom("coucou");

string prenom = nom + "coucou2";



...etc...
0
Rejoignez-nous