A cessé de fonctionner

recan93 Messages postés 40 Statut Membre -  
chico200987 Messages postés 856 Statut Membre -
Pas de problème dans la compilation, mais en exécution me fait a cessé de fonctionner.
#include <cstdlib>
#include <iostream>

using namespace std;

class Client
{
      private: // variable de classe 
              static int cmpt;
              int CNI;
              int CODE;
              char *NOM;
              char *PRENOM;
              int SOLDE;
              
      public:
              Client(int cni,char *nom,char *prenom,int solde);// constructeur 1
              //Client(int cni=0,int solde=0);
              void Afficher();
              };
    //-------------------------------------------------------------
    int Client::cmpt=0; // insitialiser la variable cmp de classe
    //-------------------------------------------------------------
    //----------------------Les constructeurs----------------------
    Client::Client(int cni,char *nom,char *prenom,int solde)
    {
                   cmpt++;
                   CODE=cmpt;
                   CNI=cni;
                   strcpy(NOM,nom);
                   strcpy(PRENOM,prenom);
                   SOLDE=solde;    
                        }
    

void Client::Afficher ()
{
     cout<<"le code est :"<<CODE<<endl;
     cout<<"le CIN :"<<CNI<<endl;
     cout<<"Le nom :"<<NOM<<endl;
     cout<<"le prenom :"<<PRENOM<<endl;
     cout<<"le solde :"<<SOLDE<<endl;
     }

int main(int argc, char *argv[])
{
    Client cl(10,"tralala","larbi",100);
    cl.Afficher();
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

1 réponse

chico200987 Messages postés 856 Statut Membre 144
 
Salut,

C'est normal tu as un SEGFAULT. Tes pointeurs NOM et PRENOM ont la valeur NULL et tu tentes de leur affecter une valeur sans leur allouer de l'espace mémoire, un petit malloc et c'est réglé ;)
0
recan93 Messages postés 40 Statut Membre
 
oui mais comment user malloc avec les strcpy ?
0
chico200987 Messages postés 856 Statut Membre 144
 
Tout simplement comme ceci, au lieu de :

strcpy(NOM,nom);
strcpy(PRENOM,prenom);


Mettre ceci :

NOM = (char *)malloc(sizeof(nom));
PRENOM = (char *)malloc(sizeof(prenom));
strcpy(NOM, nom);
strcpy(PRENOM, prenom);


;)
0