Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2778 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme de segmentation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de segmentation

n°1814099
san12
Posté le 20-11-2008 à 06:44:00  profilanswer
 

Bonjour tout le monde ;-) je suis nouvelle dans le forum, je cherche desesperment à corriger mon code.
j'essaie créer une fonction qui charge un tableau de structure. Ma structure comprend une chaine de caractères et un entier qui incrémente le nombre d'occurrence de ce mot dans l tableau s'il y existe, sinon ce mot sera sauvegardé dans une nouvelle case du tableau. Mon tableau est statique de taille NMAX.

Code :
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. int itmc=0;
  5. struct motcle{
  6. int occ;
  7. char *mot;
  8. };typedef struct motcle MOTCLE;
  9. void charger_mot_cle(MOTCLE t[],char *s)
  10. { int i;
  11.   for(i=0;i<itmc;i++)
  12.    {
  13.      if(!(strcmp(t[i].mot,s))) (t[i].occ)++;
  14.      break;
  15.    }
  16.   strcpy(t[itmc].mot,s);
  17.   itmc++;
  18.      }
  19. int main(void)
  20. {
  21. MOTCLE mc[200];
  22. charger_mot_cle(mc,"if" );
  23. getch();
  24. }


en utilisant le debug de dev cpp j'ai le mesage d'erreur suivant
un violation d'accès(erreur de segmentation) est apparue dans votre programme ???  
je suis perdu
 merci de bien vouloir m'aider à résoudre ce problème.

mood
Publicité
Posté le 20-11-2008 à 06:44:00  profilanswer
 

n°1814100
h0taru
Posté le 20-11-2008 à 07:31:27  profilanswer
 

Salut,
 
Une chose vue "vite fait":
 
-Tu declares un tableau de structures mc
-Tu passes en argument ce tableau mais....
-Ce que recoit la fonction charger_mot_cle() est une copie de mc[]
-Dans cette copie, dans chaques structure tu as une copie de occ et une copie de pointeur.... sauf que un pointeur etant une adresse, ce sont les "vraies" valeurs" au bout.
=> Le compilo doit pas aimer ça effectivement.
 
Je suis pas spécialiste de la question mais à ta place je passerai en argument à charger_mot_cle() l'adresse de mc: &mc
 
Ce qui changerait le prototype en void charger_mot_cle(MOTCLE * t ,char *s);
 
edit: de plus je sais pas si tu peux passer en paramêtre comme ca l'adresse d'une chaine de caractères. Ou alors je savais pas le C aussi permissif.
Imo, tu dois declarer au prealable un tableau de char et là tu pourras passer l'adresse. C'est au minimum "plus propre".

Message cité 1 fois
Message édité par h0taru le 20-11-2008 à 07:38:06
n°1814109
Joel F
Real men use unique_ptr
Posté le 20-11-2008 à 07:59:29  profilanswer
 

c'est surtout qu'il faudrait peu etre ALLOUER le pointeur mot ...
 
ET heureusement que tu peut passer l'adresse d'une chaine de caractere en parametres ...

n°1814111
Elmoricq
Modérateur
Posté le 20-11-2008 à 08:00:36  profilanswer
 


 
[:quardelitre]


Message édité par Elmoricq le 20-11-2008 à 08:00:59
n°1814234
Joel F
Real men use unique_ptr
Posté le 20-11-2008 à 11:16:40  profilanswer
 

oui je trouve aussi [:pingouino]

n°1814621
h0taru
Posté le 20-11-2008 à 18:32:12  profilanswer
 

Joel F a écrit :

oui je trouve aussi [:pingouino]


 
Bah.
C'est pas comme si ton avis m'importait.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme de segmentation

 

Sujets relatifs
[HTML/CSS] problème d'organisation - Résolu.[SQL] Problème Order By
Probleme de compilation avec les template[scriptaculous]Problème Drag n Drop
Problème : Envoi de mailProblème avec LoadVars!!!
probleme avec la commande makeProbleme de segmentation
problème d'erreur de segmentation[ASM GNU x86] Problème de segmentation fault [Résolu]
Plus de sujets relatifs à : probleme de segmentation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR