|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Bonjour, j'ai créé un programme qui a pour objectif de : lire dans un fichier ligne par ligne, puis extraire les mots de chacun de ces lignes, et enfin placer ces mots dans une liste. Tout marche, jusqu'à la rentrée dans une liste, où j'obtiens une segmentation fault, mais je vois pas d'où ça vient. Voilà le main.c et la définition de ma liste :
Code :
Code :
|
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Fred KwarizChef de projet en SSII Inscription : octobre 2011 Messages : 745 ![]() |
Bonjour,
Je n'ai que regardé ton code en diagonal, mais je suppose que le problème vient d'une mauvaise utilisation de strtok (cf la man page). Le pointeur que tu insères dans ta liste sera modifié par les appels ultérieurs à fgets et strtok. Le plus simple pour le constater et confirmer mon intuition est d'utiliser ton débugueur favori ( printf manuels, gdb, ddd, celui de ton ide ...). |
|
00
|
|
|
#3 | ||
![]() ![]() Patrick GonordEnseignant Chercheur Inscription : juin 2005 Messages : 5 435 ![]() |
w mal initialisé
Code :
__________________
Publication : Concepts en C Mon avatar : Glenn Gould -------------------------------------------------------------------------- Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
|
||
|
|
10
|
|
|
#4 | ||||
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Merci beaucoup diogene, c'est ça qui pêchait effectivement. Maintenant, j'ai un autre problème, mes codes ont changé en :
le main.c Code :
Code :
Splitting string "pourquoi" into words: Extracted word : pourquoi Splitting string "il" into words: Extracted word : il Splitting string "veut" into words: Extracted word : veut Splitting string "pas" into words: Extracted word : pas Splitting string "commencer" into words: Extracted word : commencer Splitting string "par" into words: Extracted word : par Splitting string "le début" into words: Extracted word : le Ectracted word : début Number of words in the list : 8 Visionnage de la chaine extraite : le le le le le le le début" |
||||
|
|
01
|
|
|
#5 | |
![]() ![]() Patrick GonordEnseignant Chercheur Inscription : juin 2005 Messages : 5 435 ![]() |
J'ai répondu, par anticipation, à cette question dans mon message précédent
Citation:
__________________
Publication : Concepts en C Mon avatar : Glenn Gould -------------------------------------------------------------------------- Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
|
|
|
|
20
|
|
|
#6 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Le problème est que je n'arrive pas à visualiser le problème ni à trouver une solution../
|
|
|
00
|
|
|
#7 | ||
![]() ![]() Patrick GonordEnseignant Chercheur Inscription : juin 2005 Messages : 5 435 ![]() |
Il faut stocker dans le maillon la chaine elle même et non pas un pointeur sur une chaine dont le contenu varie (str) au cours de l'exécution. Du genre :
Code :
__________________
Publication : Concepts en C Mon avatar : Glenn Gould -------------------------------------------------------------------------- Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
|
||
|
|
10
|
|
|
#8 |
|
Invité de passage
![]() Inscription : novembre 2012 Messages : 7 ![]() |
Ca fonctionne, merci beaucoup
. J'ai compris le problème, et je pense que j'aurais pu résoudre le problème en utilisant fscanf au lieu de fgets.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com