A cessé de fonctionner

Fermé
recan93 Messages postés 36 Date d'inscription samedi 4 mai 2013 Statut Membre Dernière intervention 25 janvier 2015 - 19 janv. 2014 à 17:47
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 - 21 janv. 2014 à 15:31
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 mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
20 janv. 2014 à 12:11
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 samedi 4 mai 2013 Statut Membre Dernière intervention 25 janvier 2015
21 janv. 2014 à 02:13
oui mais comment user malloc avec les strcpy ?
0
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 143
Modifié par chico200987 le 21/01/2014 à 15:32
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