IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

ERREUR de SEGMENTATION


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut ERREUR de SEGMENTATION
    Bonsoir,j'ai un problème avec un program C ,quand j'execute avec la commande gcc il me met :" ERREUR DE SEGMENTATION"

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    quand j'execute avec la commande gcc il me met :" ERREUR DE SEGMENTATION"
    Hmmm, tu n'exécutes pas vraiment ton programme avec gcc, si? Tu compiles avec gcc seulement...

    Par contre, si tu compiles vraiment avec gcc et t'obiens une erreur de segmentation, fais voir le code qui le provoque...

    Jc

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Comme ca on peut rien te dire, il faut un code compilable reduit au minimum ou bien, si tu sais d'où viens le problème, post le code en question !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut
    le code est un peu long et je n'arrive pas à le coller à cette page esk vous pouvez me donner votre mail,je vous l'envoie par attach

  5. #5
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Citation Envoyé par Korma
    le code est un peu long et je n'arrive pas à le coller à cette page esk vous pouvez me donner votre mail,je vous l'envoie par attach
    Et la marmotte....
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  6. #6
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut
    qu'est ce que la marmotte,?e m'excuse je suis un noviste

  7. #7
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    quand j'execute avec la commande gcc il me met :" ERREUR DE SEGMENTATION"
    Revenons au problème de départ...

    Quel est ton cas:
    - Tu as un code qui est super long, tu le compiles avec gcc (il y a combien de fichiers?) et gcc fait une erreur de segmentation... S'il y a plusieurs fichiers tu peux donc savoir quel fichier pose problème...

    - Tu compiles, tout fonctionne, mais lorsque tu lances ton programme, il fait une erreur de segmentation...

    C'est quoi comme programme d'ailleurs??

  8. #8
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut
    j'ai deux fichiers un objet .o et un autre .c ,le .c fait 128 lignes ,dites moi comment lous le montrer et je vous le donne

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Korma
    j'ai deux fichiers un objet .o et un autre .c ,le .c fait 128 lignes ,dites moi comment lous le montrer et je vous le donne
    Tu fais un copier / collé du .c dans le corps du message et tu l'encadres avec des balises codes. Tout çà est évidemment expliqué dans les regles du forum que tu aurais dû lire avant de poster...

    Pour le .o, tu n'as pas le source ?

    Celui-ci, il faudrait le déposer sur un serveur web et que tu nous donnes l'url, ainsi que la machine pour lequel il a été compilé.

  10. #10
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut
    jvoici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <string.h>
    #include <ctype.h>
     
    #define ip "62.39.109.164"
    #define port "5757"
    #define diff "001"
     
    typedef struct
    {
      char version_tc[5];
      char dateq_tc[14];
      char type_tc[5];
      char numquestion_tc[10];
      char site_tc[7];
      char rang_tc[2];
      char cle_tc[8];
      char identifiant_tc[10];
      char montant_tc[10];
      char devise_tc[3];
      char reference_tc[250];
      char porteur_tc[19];
      char dateval_tc[4];
      char cvv_tc[3];
      char activite_tc[4];
      char archivage_tc[12];
      char numappel_tc[10];
      char numtrans_tc[10];
      char autorisation_tc[10];
      char codereponse_tc[5];
      char commentaire_tc[100];
      char serveurip_tc[13];
      char serveurport_tc[4];
      char differe_tc[3];
      char Reference_abonne_tc[250];
    }trameppps;
     
    /* d?claration de toutes les fonctions propres ? l'objet. Seule la fonction "appel_ppps()" sera utilis?e dans cet exemple */
     
    extern char * code_ppps_abonne(char* psTrameToCode,int* piReturnCode);
    extern int decode_ppps_abonne(char* psTrameToCode,trameppps * questrep_st);
    extern int appel_ppps_abonne(trameppps* questrep_st);
     
    /* ce programme va r?cup?rer les donn?es dynamiques en param?tre, remplir la structure et appeler la fonction appel_ppps()
       pour afficher les donn?es retourn?es par Paybox sur la sortie standard */
     
    int main(int argc, char *argv[])
    {
      /*cr?ation d'une structure nomm?e "structtrames" */
      trameppps structtrames; 
     /* d?claration de diff?rentes variables */
     
      int i,resultat;
    char reponse[256];
     // int taill_numappel,taill_numtrans,taill_auto;
     
     if(argc!=8)
        {
          printf("erreur parametres(fonction,date 14,numquestion 10,montant 10,reference 250,porteur 19,dateval 4,cvv 3)\n");
          return 0;
        }
    //questrep_st=(trameppps*)malloc(sizeof(trameppps));
      // initialisation de la structure ? vide 
      memset(structtrames.version_tc,0,sizeof(structtrames));
    //remplissage de la structure (tous les champs de la trame question)
     
      strncpy(structtrames.version_tc,"00103",5);
      strncpy(structtrames.dateq_tc,argv[1],14);  // premier argument du programme : Date et heure
      strncpy(structtrames.type_tc,"00003",5);
      strncpy(structtrames.numquestion_tc,argv[2],10); // Second argument du programme : Num de question
      strncpy(structtrames.site_tc,"1999888",7);
      strncpy(structtrames.rang_tc,"92",2);
      strncpy(structtrames.cle_tc,"LMFENRJB",8);
      strncpy(structtrames.identifiant_tc,"",10);
      strncpy(structtrames.montant_tc,argv[3],10); // troisi?me argument : Montant
      strncpy(structtrames.devise_tc,"978",3);
      strncpy(structtrames.reference_tc,argv[4],250); // Quatri?me argument : R?f?rence Commande
      strncpy(structtrames.porteur_tc,argv[5],19); //Cinqui?me argument : Num de la carte
      strncpy(structtrames.dateval_tc,argv[6],4); //Sixi?me argument : Date de fin de validit? de la carte 
      strncpy(structtrames.cvv_tc,argv[7],3); // Septi?me argument : Valeur du cryptogramme visuelle
      strncpy(structtrames.activite_tc,"024",3);
      strncpy(structtrames.archivage_tc,"boutiquetest",12);
      strncpy(structtrames.numtrans_tc,"",10);
      strncpy(structtrames.numappel_tc,"",10);
      strncpy(structtrames.serveurip_tc,ip,13);//ip
      strncpy(structtrames.serveurport_tc,port,4);//port
      strncpy(structtrames.differe_tc,diff,4);
    //c="00103&09122005181020&00003&0000000012&1999888&99&1999888I&1206548523&0000001250&978&bhfr4323&0000000000000123152&0206&023&024";
     
    printf("l'adresse ip et le port a l'envoi:\n");
    printf("Adresse ip:%-10.13s\n",structtrames.serveurip_tc);
    printf("Le port est:%-10.4s\n",structtrames.serveurport_tc);
    printf("Le differe_tc est :%-10.3s\n",structtrames.differe_tc);
    // appel de la fonction "appel_ppps()" de l'objet payboxpppsclient.o
     
     
    //printf("%s",code_ppps_abonne(c,0));
    /*
     printf("%s\n",questrep_st->montant_tc);
     printf("%s\n",questrep_st->devise_tc);
     printf("%s\n",questrep_st->reference_tc);
     printf("%s\n",questrep_st->porteur_tc);
     printf("%s\n",questrep_st->dateval_tc); 
     printf("%s\n",questrep_st->cvv_tc);
     printf("%s\n",questrep_st->activite_tc);
     printf("%s\n",questrep_st->archivage_tc);
     printf("%s\n",questrep_st->numtrans_tc);
     printf("%s\n",questrep_st->archivage_tc);
     printf("%s\n",questrep_st->numtrans_tc);
     printf("%s\n",questrep_st->numappel_tc);
     printf("%s\n",questrep_st->serveurip_tc);//ip
     printf("%s\n",questrep_st->serveurport_tc);//port
     printf("%s\n",questrep_st->differe_tc);                                                                                                                            */
     
     /*appel de la fonction appel_ppps */
      resultat=appel_ppps_abonne(&structtrames);
     
      // initialisation du tableau de caract?res reponse ? vide
      memset(reponse,0,sizeof(reponse));
     
      /* renvoi du r?sultat d'appel_ppps(),numquestion,numappel,numtrans,autorisation,codereponse,commentaire.
         toutes ces donn?es sont s?par?es par des tirets */
      sprintf(reponse,"%d-%-10.10s-%-10.10s-%-10.10s-%.*s-%-5.5s-%.*s\0",resultat,structtrames.numquestion_tc,structtrames.numappel_tc,structtrames.numtrans_tc,strlen(structtrames.autorisation_tc),structtrames.autorisation_tc,structtrames.codereponse_tc,strlen(structtrames.commentaire_tc),structtrames.commentaire_tc);
      printf("%s\n",reponse);
     
      return 1;
     
    }
    [/list]

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Korma
    jvoici le code:
    Tu peux donner une exemple de ligne de commande ?

  12. #12
    Rédacteur

    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 113
    Par défaut
    printf("erreur parametres(fonction,date 14,numquestion 10,montant 10,reference 250,porteur 19,dateval 4,cvv 3)\n");
    ça ?

  13. #13
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Lorsque tu lances le programme (et en réitérant la question d'Emmanuel: donne un exemple de lancement du programme), qu'affiche-t-il exactement?

    Sinon tout me semble correct bien que TRES TRES moche mais bon...

    Sauf ici ou ca devrait etre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //C'etait comme ceci:
    strncpy(structtrames.activite_tc,"024",3); 
    //Je mettrais:
    strncpy(structtrames.activite_tc,"024",4);
    Et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //c'etait comme ceci
    char differe_tc[3]; 
    //Ca devrait etre:
    char differe_tc[4];

    Enfin, dans le doute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //c'etait comme ceci 
    sprintf(reponse,...);
    //je mettrais:
    snprintf(reponse,250,....);
    Mais je dis ca en lisant en diagonale, c'est quand même un peu moche comme code, je comprend pourquoi t'étais rétiscent à le montrer!

  14. #14
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut
    Maintenat je n'ai plus l'erreur de segmentation car j'ai fais des modifs dans le code ,il m'affiche ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@KOR root]# cd /root/.gnome-desktop/paybox/
    [root@KOR paybox]# gcc -o exec testppps1.c payboxpppsclient_RedHat8.o
    [root@KOR paybox]# ./exec 13122005181630 0000010320 0000505755 j6omùjùjo5454 4235835190012614159 0107 024
    l'adresse ip et le port a l'envoi:
    Adresse ip:62.39.109.164
    Le port est:5757
    Le differe_tc est :001
    10-0000010320-          -          --     -
    [root@KOR paybox]#
    LE 10 est une erreur qui correspond à :"format de la date de fin de validité incorrect", en plus les autres résultats ne sont pas affichés ,il met des vides

  15. #15
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(reponse,"%d-%-10.10s-%-10.10s-%-10.10s-%.*s-%-5.5s-%.*s\0",resultat,structtrames.numquestion_tc,structtrames.numappel_tc,structtrames.numtrans_tc,strlen(structtrames.autorisation_tc),structtrames.autorisation_tc,structtrames.codereponse_tc,strlen(structtrames.commentaire_tc),structtrames.commentaire_tc);
    Enleve les parametre et regarde ce que ca donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sprintf(reponse,"%d %s %s %s %s %s %s", 
    resultat,
    structtrames.numquestion_tc,
    structtrames.numappel_tc,
    structtrames.numtrans_tc,
    strlen(structtrames.autorisation_tc),
    structtrames.autorisation_tc,
    structtrames.codereponse_tc,
    strlen(structtrames.commentaire_tc),
    structtrames.commentaire_tc);
    Et on remarque que tu as 9 arguments après la chaine de caractères et en plus certains sont des entiers mais tu les définis comme string... Pas génial...

    Fais un printf pour voir ce qu'il y a dedans avant... (tu avais ça avant mais tu l'as enlevé...)

    Jc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo