Fscanf !!!!!
Fermé
César
-
20 juin 2002 à 18:19
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 - 21 juin 2002 à 17:32
Marden Messages postés 1072 Date d'inscription dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 - 21 juin 2002 à 17:32
A voir également:
- Fscanf !!!!!
- While fscanf ✓ - Forum C
- Fgets fscanf ✓ - Forum C
2 réponses
Marden
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
209
21 juin 2002 à 17:32
21 juin 2002 à 17:32
La fonction scanf (ou fscanf) lit la ligne jusqu'au caractère d'interligne, et charge les différents champs selon les spécifications du format.
Selon K & R (édition 1985), page 142 :
un champ en entrée est défini comme étant une chaîne de caractères qui ne sont pas des caractères d'espacement blanc (espace, tabulation, interligne); il s'étend soit jusqu'au caractère d'espacement blanc suivant, soit jusqu'au moment où l'on atteint la largeur du champ, dans le cas où celle-ci est spécifiée (dans le format).
Le comportement que tu obtiens est donc normal. Il faut donc s'orienter vers une solution de type "getline" telle que décrite dans K & R.
Sinon, vers fgets(dest,maxLen,file) qui, si la taille du buffer est suffisante, et la longueur de la ligne courante inférieure à cette taille, donne le contenu de la ligne, y compris le caractère d'interligne (\n). Le comportement n'est donc pas le même si l'on atteint ou non la fin de ligne, et ne permet pas d'utiliser proprement la fonction strlen pour en connaître la taille (qui exige un \0 final).
Rassure-toi, tout le monde est passé par là !!!
Selon K & R (édition 1985), page 142 :
un champ en entrée est défini comme étant une chaîne de caractères qui ne sont pas des caractères d'espacement blanc (espace, tabulation, interligne); il s'étend soit jusqu'au caractère d'espacement blanc suivant, soit jusqu'au moment où l'on atteint la largeur du champ, dans le cas où celle-ci est spécifiée (dans le format).
Le comportement que tu obtiens est donc normal. Il faut donc s'orienter vers une solution de type "getline" telle que décrite dans K & R.
Sinon, vers fgets(dest,maxLen,file) qui, si la taille du buffer est suffisante, et la longueur de la ligne courante inférieure à cette taille, donne le contenu de la ligne, y compris le caractère d'interligne (\n). Le comportement n'est donc pas le même si l'on atteint ou non la fin de ligne, et ne permet pas d'utiliser proprement la fonction strlen pour en connaître la taille (qui exige un \0 final).
Rassure-toi, tout le monde est passé par là !!!
Marden
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
209
20 juin 2002 à 18:29
20 juin 2002 à 18:29
A mon avis, la solution doit passer par le Kernighan & Ritchie, en commençant à la page 1.
asevere
Messages postés
13089
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
425
21 juin 2002 à 15:48
21 juin 2002 à 15:48
ha ca me fait plaisir marden... je vois qu'on a été a la meme ecole
essai d'addresser ta variable temp>> &temp c'est plus correct mais je sais pas si ca reglera tout le probleme
\__ ',, ' Na kaer eo va Breizh,
; ; \/ gand ar mor glaz èn-dro dezi !
essai d'addresser ta variable temp>> &temp c'est plus correct mais je sais pas si ca reglera tout le probleme
\__ ',, ' Na kaer eo va Breizh,
; ; \/ gand ar mor glaz èn-dro dezi !