Lecture d'un fichier texte en C

toto000 Messages postés 10 Date d'inscription mercredi 17 décembre 2003 Statut Membre Dernière intervention 2 novembre 2004 - 17 déc. 2003 à 20:55
stefdroque Messages postés 3 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 18 mai 2008 - 21 févr. 2006 à 10:50
Bonjour,

j'ai un fichier texte avec un mot par ligne et je voudrai mettre ces mots dans un tableau de telle sorte que le premier mot soit dans la première case, le deuxième dans la deuxième case et ainsi de suite.
Je pense qu'il faut que j'utilise fopen et fclose pour l'ouverture et la fermeture de mon fichier mais comment lire une ligne la mettre dans une case d'un tableau et passer à la suivante ?

Merci d'avance :-p

7 réponses

Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
17 déc. 2003 à 21:17
après ton fopen :

char tab[256][256];

for(int i=0; i<NbLigne; i++)
{
fgets(tab[i], 255, Fichier);
}

ca devrait te suffir je pense
0
Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
17 déc. 2003 à 21:23
tu peu aussi faire ca avec un :
while(!feof(Fichier))

ca sera mieu
0
toto000 Messages postés 10 Date d'inscription mercredi 17 décembre 2003 Statut Membre Dernière intervention 2 novembre 2004
17 déc. 2003 à 22:57
C'est vrai tu as raison avec fgets ca met le mot dans la case du tableau mais suivi de \n et de \0. Or moi j'aimerai avoir juste le mot et \0 dans une case sans le retour a la ligne.
Merci de m'avoir accordé un peu de ton temps. :-p
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 déc. 2003 à 23:45
tu fais:
char* pEnd =strrch(tab[i], '\n');
if(pEnd)
*pEnd = '\0';

pour chacune des lignes
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Guidelor Messages postés 236 Date d'inscription jeudi 31 octobre 2002 Statut Membre Dernière intervention 18 août 2006
19 mars 2004 à 17:15
Anacr0x, pourrais-tu expliquer pourkoi tu as ecris les lignes suivantes ?

char tab[256][256];

fgets(tab[i], 255, Fichier);

J'ai pas trop compris l'histoire des 255-256 et pourquoi tab a-t-il 2 dimensions ?

en tout cas merci ce code m'a bien servi mais j'aimerais aussi le comprendre...

:: Guidelor ::
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
19 mars 2004 à 21:56
tab est un tableau de chaîne de caractères (pour récupérer plusieurs ligne).
comme une chaîne de caractères est également un tableau de caractères, tab est donc un tableau à 2 dimension :

char tab[dim1][dim2];

tab pourra contenir dim1 chaînes de caractères de taille dim2.
(tab[0], tab[1] .. tab[dim1-1]);

ensuite fgets a comme second paramètres la taille de la chaîne de caractères. en passant dim2-1, on est sûr qu'il aura de la place pour rajouter à la fin le nul de terminaison (apparemmnt la fonction fgets, le vérifie donc on peut passer dim2)
0
stefdroque Messages postés 3 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 18 mai 2008
21 févr. 2006 à 10:50
Bonjour, voilà mon problème :

Je dois écrire une fonction permettant de remplacer efficacement fgets : et qui adaptera automatiquement la taille de l'ensemble de caractères renvoyés au nombre de caractères lus.

Pouvez vous m'aider ?
Stefdroque@wanadoo.fr
0
Rejoignez-nous