Prob tableau de pointeurs

cs_fred111111 Messages postés 2 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 25 mai 2005 - 7 févr. 2005 à 01:22
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 7 févr. 2005 à 11:25
ben voila , j'ai un petit souci pour un prog que je dois réaliser pour
un cours. Il s'agit en fait d'un pendu, avec un dictionnaire contenu
dans un fichier texte. Aucune erreur de compilation mais bien une
erreur dans l'execution. En utilisant le debugger, je m'appercois que
c'est lorsque je vais rechercher les lignes dans le fichier texte et
les copies dans un tableau de poinbteur que ca bug. Pourriez vous
m'aider a trouver l'erreur ?

voici la fonction en question

j'ai mis en rouge la ou le debugger me dis que ca ne vas pas (acces
violation), le plus bizarre c que c vraiment en fin de boucle, lorsque
qu'il va chercher le dernier mot dans le fichier)



Merci bcp pr votre aide



char** creer_dico (int*n)

{



int i=0;

char **mot;

char ligne_fch[80];

FILE * pstream;

*n=0;

pstream=fopen("..\\dico.txt","rt");

do

{

fgets(ligne_fch,80,pstream);

if (!(feof(pstream)||ferror(pstream)))



*n=*n+1;

}

while (!(feof(pstream)||ferror(pstream)));



if (!feof(pstream))

printf("Erreur de lecture du fichier...\n");



mot=(char**)malloc((*n)*sizeof(char*));

rewind(pstream);

printf("%d",*n);



do

{



fgets(ligne_fch,80,pstream);

if (!(feof(pstream)||ferror(pstream)))



mot[i]=(char*)malloc((strlen(ligne_fch)+1)*sizeof(char));

if (mot[i]==NULL) printf ("erreur d'allocation");

strcpy(mot[i],ligne_fch); //c'est ici le probleme je pense

//printf("%s",mot[i]);

i++;

}





while (!(feof(pstream)||ferror(pstream)));

printf("\n");



if (!feof(pstream))

printf("Erreur de lecture du fichier...\n");

return (mot);

}

3 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
7 févr. 2005 à 09:04
Faudrait vérifier si 'i' ne dépasse pas 'n' par hazard (seule cause que je vois apparement).
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
7 févr. 2005 à 11:08
en fin de boucle? c'est normal:
fgets(ligne_fch,80,pstream);
if (!(feof(pstream)||ferror(pstream)))
mot[i]=(char*)malloc((strlen(ligne_fch)+1)*sizeof(char));

le dernier mot n'est pas alloué puisque on arrive à la fin du fichier: ca plante.
essaye plutot avec while(!feof(pstream) au lieu de ton do/while
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
7 févr. 2005 à 11:25
Exact, il faudrait au moins des {} pour le bloc du if

if (!(feof(pstream)||ferror(pstream)))
{
mot[i]=(char*)malloc((strlen(ligne_fch)+1)*sizeof(char));
if (mot[i]==NULL) printf ("erreur d'allocation");
strcpy(mot[i],ligne_fch); //c'est ici le probleme je pense
}
0
Rejoignez-nous