Probleme avec tableau de chaines... - C++ - Programmation
Marsh Posté le 31-03-2005 à 12:36:47
Ca sent le jardinage mémoire ... tes chaînes in[i] (en l'occurrence pour ton cas, les chaînes out[]) sont-elles correctement allouées ?
Marsh Posté le 31-03-2005 à 12:40:02
En fait avant de faire appel a lectureFenetre j'affiche tous les elements contenus dans out et il n'y a aucun probleme donc je pense que mon tableau est correctement alloué !
Est-ce que ca serait possible que en faisant des new pour mes pointeurs dans CreeOuModifieLiens j'ecrive à l'emplacement que j'avais reserve pour mes chaines ?
Marsh Posté le 31-03-2005 à 12:48:53
Kineas a écrit : En fait avant de faire appel a lectureFenetre j'affiche tous les elements contenus dans out et il n'y a aucun probleme donc je pense que mon tableau est correctement alloué ! |
Ca ne prouve pas que ton tableau est correctement alloué. Si tu as écrit sur une zone non allouée préalablement, elle pourra être écrasée n'importe quand.
Marsh Posté le 31-03-2005 à 12:55:34
Ben j'ai regarde mais il ne me semble pas avoir fait d'erreurs lors de mon allocation.
En fait je crée mon tableau a partir d'un fichier texte de la facon suivante :
Code :
|
Désolé le code est un peu long...
Marsh Posté le 31-03-2005 à 14:48:00
Kineas a écrit : Ben j'ai regarde mais il ne me semble pas avoir fait d'erreurs lors de mon allocation. |
int motCorrect(char const *motLu);
int reconstruitMot(char const *motAvantTiret,char const *motLu, int sep,char *motConstruit);
http://mapage.noos.fr/emdel/notes.htm#fichiers
http://mapage.noos.fr/emdel/notes.htm#malloc
etc.
Marsh Posté le 31-03-2005 à 16:26:12
Ok merci pour tout ces details mais en fait etant donner que je ne trouvais pas la solution j'ai decide de tout passer mon programme avec des string et des vector (acr en fait a la base je voulais faire du c++...)
Sinon une question quand meme sur ce que tu m'as dit Emmanuel : que fait feof() ?? parce que la je suis passe aux fgetc et donc au '!=EOF' mais j'aurai quand meme besoin a un moment d'appeler feof() (car dans la boucle je fais appel seulemtn a des procedures qui elles lisent les caracteres et donc je ne peux pas faire un '!=EOF' !)
Marsh Posté le 31-03-2005 à 17:04:16
Kineas a écrit : que fait feof() ?? |
feof() sert uniquement à préciser la cause de l'arrêt de la lecture après que la fin de lecture ai été detectée (retour de EOF, par exemple). Ca n'a qu'un intérêt limité...
http://mapage.noos.fr/emdel/notes.htm#fichiers (déjà signalé. Est-ce la peine que je me décarcasse si tu ne lis pas les liens fournis ?)
Citation : parce que la je suis passe aux fgetc et donc au '!=EOF' mais j'aurai quand meme besoin a un moment d'appeler feof() (car dans la boucle je fais appel seulemtn a des procedures qui elles lisent les caracteres et donc je ne peux pas faire un '!=EOF' !) |
Je ne vois pas trop où est le problème. Ce code est 'canonique'...
|
Marsh Posté le 31-03-2005 à 17:09:35
Ok j'ai compris pour ce qui est des fichiers !
Par contre je viens de finir de transformer mon code en vrai code c++ (enfin je pense...) et j'ai toujours la meme erreur !
Par contre je pense avoir trouver d'ou elle vient mais je ne sais pas pourquoi je l'ai !
Mon code est le suivant maintenant :
Code :
|
et le probleme arrive toujours lors de la 11 eme boucle (i=10) mais en fait il est cause tout simplement par la variable taille (qui passe dans mon exemple qui plante de 12 lorsque i vaut 9 à 1056964608 lors de l'iteration suivante!! Et la j'avoue que je suis bluffé !!)
(la segmentation fault vient du fait que dans mon ex le programme doit rentrer 2 fois dans le if, 8 fois dans le else et puis 2 fois dans le else if mais il rentre une fois de trops dans le else...)
Marsh Posté le 31-03-2005 à 17:16:07
Kineas a écrit : Ok j'ai compris pour ce qui est des fichiers ! |
Mauvais forum. C et C++ sont deux langages différents. Donc, 2 forums differents.
Change la balise de [C] en [C++]
Marsh Posté le 31-03-2005 à 12:30:30
Bonjour,
Voila j'ai le probleme suivant :
dans la procedure suivante je fais tout d'abord une premiere trace pour afficher in[i] puis la vient la boucle qui fait appel à la fonction CreeOuModifieLiens qui ne modifie pas ses paramètres et la j'essaye de refaire la meme trace que precedemment mais ca me fait une segmentation fault ! J'ai regardé le i garde la meme valeur donc je me demandais comment c'etait possible que mon tableau soit effacé quand je fais appel à ma seconde fonction ?!
J'ai oublie de preciser que cela n'arrivait que lorsque i atteignait la valeur 10 (avant ca marche parfaitement )
Message édité par Kineas le 31-03-2005 à 17:16:36