cs_HeXoR
Messages postés165Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention15 avril 2010
-
28 nov. 2009 à 14:02
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
28 nov. 2009 à 22:32
Bonjour, malgré les recherches que j'ai fait sur scanf, j'ai du mal à comprendre comment il fonctionne exactement : comment reconnaît-il la fin du message tapé ?
Je m'explique :
Soit char chaine[64].
Je fais un scanf("%s", chaine).
Voici ce que je pense à l'heure actuelle :
- Taper "entrée" indique la fin du scanf si du texte a été tapé avant ce "entrée".
Le scanf donnera ce texte tapé avant "entrée". Le "entrée" est reporté après le scanf (un getchar() effectué juste après le scanf donnera un '\n').
- Si aucun texte n'est tapé avant "entrée", le "entrée" n'est pas pris en compte (ce n'est ni reconnu comme la fin du scanf, ni comme un caractère qu'il enregistrera).
Tout ce qui est après un caractères d'espacement est ignoré.
Scanf lis tout ce qu'il peut jusqu'à atteindre \n, \n\r ou EOF (CTRL + D sous Unix) après un caractère d'espacement ou EOF + EOF.
Le scanf donnera ce texte tapé avant "entrée". Le "entrée" est reporté après le scanf (un getchar() effectué juste après le scanf donnera un '\n').
Oui.
Si aucun texte n'est tapé avant "entrée", le "entrée" n'est pas pris en compte (ce n'est ni reconnu comme la fin du scanf, ni comme un caractère qu'il enregistrera).
Plus précisement, tant que tu tapes uniquement des caractères d'espacement, rien n'est pris en compte. (Par exemple, espace + espace + entree, ne fait rien).
Si tu t'y intéresse vraiment, tu peux en lire le code source: