[ C ] lire un fichier text ligne par ligne
Fermé
bil808
Messages postés
21
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
10 février 2008
-
10 févr. 2008 à 11:15
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 10 févr. 2008 à 12:46
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 10 févr. 2008 à 12:46
A voir également:
- [ C ] lire un fichier text ligne par ligne
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Fichier rar - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
- Vente en ligne particulier - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
10 févr. 2008 à 11:33
10 févr. 2008 à 11:33
Salut,
En fait, tu sauvegardes le pointeur ligne_lu dans le tableau. Et à l'itération suivante, tu sauvegardes la nouvelle valeur dans ligne_lu. Donc toutes les données du tableau pointent maintenant vers la nouvelle valeur. Et tout ceci jusqu'à la dernière itération. D'où ton problème.
Le mieux serait de sauvegarder dans ton tableau les valeurs et non les pointeurs. Pour ceci tu devras utiliser la fonction strcpy.
PS : n'oublie pas d'initialiser i à 0 ;)
Cordialement
En fait, tu sauvegardes le pointeur ligne_lu dans le tableau. Et à l'itération suivante, tu sauvegardes la nouvelle valeur dans ligne_lu. Donc toutes les données du tableau pointent maintenant vers la nouvelle valeur. Et tout ceci jusqu'à la dernière itération. D'où ton problème.
Le mieux serait de sauvegarder dans ton tableau les valeurs et non les pointeurs. Pour ceci tu devras utiliser la fonction strcpy.
PS : n'oublie pas d'initialiser i à 0 ;)
Cordialement
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
10 févr. 2008 à 12:46
10 févr. 2008 à 12:46
Bonjour,
En effet, ligne_lu est un tableau et son adresse ne change jamais au cours de ton programme, seules ses données varient.
Et donc ptr = ligne_lu récupère toujours la même adresse. (Tu pourras même constater ceci en affichant les pointeurs stockés dans t_lignes)
Ce qu'il te faut c'est garder une trace en mémoire de toutes les lignes. Soit tu fais un giga tableau pour contenir tout ça, soit tu veux un programme propre et il faut demander de la mémoire et recopier chaque ligne dedans.
(Et là deux solutions : malloc + strcpy ou strdup qui fait les deux en un. Et quoiqu'il en soit, un free pour libérer la mémoire à la fin du programme (1 malloc ou 1 strdup = 1 free)
M.
En effet, ligne_lu est un tableau et son adresse ne change jamais au cours de ton programme, seules ses données varient.
Et donc ptr = ligne_lu récupère toujours la même adresse. (Tu pourras même constater ceci en affichant les pointeurs stockés dans t_lignes)
for ( unsigned int i = 0 i != 500 ; i++ ) printf( %3d : %p\n, i, t_ligne + i );
Ce qu'il te faut c'est garder une trace en mémoire de toutes les lignes. Soit tu fais un giga tableau pour contenir tout ça, soit tu veux un programme propre et il faut demander de la mémoire et recopier chaque ligne dedans.
(Et là deux solutions : malloc + strcpy ou strdup qui fait les deux en un. Et quoiqu'il en soit, un free pour libérer la mémoire à la fin du programme (1 malloc ou 1 strdup = 1 free)
M.