-
Le problème vient de ta variable x dans la fonction lecture_fichier : elle est locale, ce qui veut dire que même si tu fais un
en fin de fonction, une fois que tu es revenu à la fonction appelante (ie main), cette mise à jour est oubliée et quand tu reviens dans la fonction pour lire f2, x est réinitialisé à 0 :
D'autre part, il y a un problème du côté des malloc. En effet, la fonction lecture_fichier alloue un espace mémoire dans lequel elle va mettre ce qu'elle lit dans le fichier et renvoie un pointeur vers le premier élément de cet espace. Quand tu appelles la fonction une première fois, tu appelles ce pointeur matrice_lecture. Le problème, c'est que tu fais exactement la même chose quand tu appelles une seconde fois : le fonction alloue un autre espace mémoire (qui n'a aucune raison d'être concaténé au premier) et tu nommes le pointeur qu'elle te fournit matrice_lecture, ce qui signifie que tu perds le pointeur vers l'espace mémoire alloué lors du premier appelle.
La solution serait donc de calculer le nombre de lignes des deux fichiers, puis de les additionner, puis de créer une matrice suffisamment grande pour contenir les deux fichiers (ie avec nb=nb1+nb2 lignes) et enfin de lire les deux fichiers l'un après l'autre mais en un seul appelle de fonction.
Enfin, dans la fonction nb_lignes, tu utilises la fonction fgets. cette fonction prend trois paramètres :
1) un pointeur vers un tableau de caractères de taille suffisante pour contenir la ligne
2) la taille de ce tableau de caractères
3) le flux où il faut lire les données
Dans ta fonction, le paramètre taille (26) est plus grand que la taille réelle du tableau (10 ou 1). Il y a donc risque que fgets essaie de lire plus données que le tableau n'est capable d'en contenir. Dans le code que je t'avais donné, j'avais défini une constante NBMAXCHARPARLIGNE (bien plus grande que la taille réelle des lignes pour être sûr de toujours lire les lignes en entier) et je l'utilisais aussi bien dans la définition du tableau qui allait contenir les lignes que dans l'appelle de la fonction fgets. Comme ça, pas de risque de se tromper.
Bon courage !!!
-
Ok je vais essayer de gérer tous ces soucis.
merci
-
Merci pour ton aide. Le programme fonctionne niquel.
tchao
charly