A cessé de fonctionner

recan93 Messages postés 36 Date d'inscription   Statut Membre Dernière intervention   -  
chico200987 Messages postés 791 Date d'inscription   Statut Membre Dernière intervention   -
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 791 Date d'inscription   Statut Membre Dernière intervention   143
 
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 36 Date d'inscription   Statut Membre Dernière intervention  
 
oui mais comment user malloc avec les strcpy ?
0
chico200987 Messages postés 791 Date d'inscription   Statut Membre Dernière intervention   143
 
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