C : lire dans un fichier pb
Résolu/Fermé
luffy.luck
Messages postés
31
Date d'inscription
vendredi 21 mars 2008
Statut
Membre
Dernière intervention
18 décembre 2008
-
15 juin 2008 à 17:21
ila - 24 juin 2008 à 08:38
ila - 24 juin 2008 à 08:38
3 réponses
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
328
15 juin 2008 à 19:08
15 juin 2008 à 19:08
Bonsoir,
je crois que fscanf te retourne le nombre d'éléments assignés (d'après le manuel), et donc "1" correspondrait à ton %1024s qui serait le seul élément que tu assignes dans ton fscanf.
Si tu essaies le code suivant, ça fonctionne ? Est-ce que ça t'affiche bien ton bloc ?
je crois que fscanf te retourne le nombre d'éléments assignés (d'après le manuel), et donc "1" correspondrait à ton %1024s qui serait le seul élément que tu assignes dans ton fscanf.
Si tu essaies le code suivant, ça fonctionne ? Est-ce que ça t'affiche bien ton bloc ?
void printFile(FILE *fid){ char block[1025]; int n; while ( !feof(fid) ){ n = fscanf(fid, "%1024s", block); /* fprintf(stdout, "%d", n);*/ block[1024] = '\0'; fprintf(stdout, "%s", block); } }
luffy.luck
Messages postés
31
Date d'inscription
vendredi 21 mars 2008
Statut
Membre
Dernière intervention
18 décembre 2008
3
15 juin 2008 à 19:39
15 juin 2008 à 19:39
en fait ca m'affiche toutes les premieres lettre des mots (toutes collées), et ceci vient du fait que je rajoute la commande de fin de chaine au block (obligation afin de traiter le fprintf) , et comme je l'ajoute a l'index "n" récupéré par fscanf = >1 et bien je n'ai que les premieres lettres. En fait se que je ne comprend pas c'est pourquoi la fscanf me retourne 1 a chaques fois.
merci de ta reponse
luffy
merci de ta reponse
luffy
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
328
15 juin 2008 à 20:17
15 juin 2008 à 20:17
Si tu fais
par exemple, fscanf va te retourner 3. Si la première assignation se passe bien, mais pas les deux autres, il va te retourner 1.
Comme toi tu n'as qu'une assignation, il te retourne 1 (ce qui veut dire que ça s'est bien passé). Si tu veux récupérer le nombre de caractères lus, regarde peut-être du côté de la fonction "read" (même si c'est plus bas niveau).
Cordialement
fscanf(fid, "%s %d %d", chaine, &i, &j);
par exemple, fscanf va te retourner 3. Si la première assignation se passe bien, mais pas les deux autres, il va te retourner 1.
Comme toi tu n'as qu'une assignation, il te retourne 1 (ce qui veut dire que ça s'est bien passé). Si tu veux récupérer le nombre de caractères lus, regarde peut-être du côté de la fonction "read" (même si c'est plus bas niveau).
Cordialement
luffy.luck
Messages postés
31
Date d'inscription
vendredi 21 mars 2008
Statut
Membre
Dernière intervention
18 décembre 2008
3
15 juin 2008 à 20:19
15 juin 2008 à 20:19
yep merci bien je pensais pas que cette fonction marchait comme cela. Merci bien pour ta reponse
luffy
luffy