scanf | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <stdio.h> int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...); int sscanf(const char *str, const char *format, ...); #include <stdarg.h> int vscanf (const char * format, va_list ap); int vsscanf (const char * str, const char * format, va_list ap); int vfscanf (FILE * stream, const char * format, va_list ap);
Exigences de macros de test de fonctionalités pour la glibc (voir feature_test_macros(7)) :
vscanf(), vsscanf(), vfscanf() : _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE ; ou cc -std=c99
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Si le nombre de spécifications de conversion dans format excède le nombre d'arguments pointeur, le résultat est indéterminé. Si le nombre d'arguments pointeur excède le nombre de spécifications de conversion, les arguments pointeur en excès sont évalués mais ignorés.
La fonction scanf() lit ses données depuis le flux d'entrée standard stdin, fscanf() lit ses entrées depuis le flux pointé par stream, et sscanf() lit ses entrées dans la chaîne de caractères pointée par str.
La fonction vfscanf() est analogue à vfprintf(3) et lit ses arguments depuis le flux pointé par stream en utilisant une liste variable d'arguments pointeurs, voir stdarg(3). La fonction vscanf() examine l'entrée standard en utilisant une liste variable d'arguments pointeurs et la fonction vsscanf() examine une chaîne. Elles sont respectivement analogues aux fonctions vprintf(3) et vsprintf(3).
La chaîne format consiste en une séquence de directives qui décrit comme traiter la séquence des caractères d'entrée. Si le traitement des directives échoue, aucune autre entrée n'est lue et scanf() revient. Un « échec » peut être soit un échec d'entrée signifiant que les caractères d'entrée ne sont pas disponibles, soit un échec de correspondance signifiant que l'entrée n'est pas appropriée (voir plus loin)
Une directive peut être :
Chaque spécification de conversion dans format commence avec soit le caractère « % », soit la séquence de caractères « %n$ » (voir plus loin pour la distinction) suivie par :
Les spécifications de conversion dans format sont de deux formes : soit elles commencent par « % », soit elles commencent par « %n$ ». Les deux formes ne doivent pas être mélangées dans la même chaîne format, excepté qu'une chaîne contenant les spécifications « %n$ » peut inclure %% et %*. Si format contient des spécifications « % », celles-ci correspondent, dans l'ordre, aux arguments pointeur successifs. Dans la forme « %n$ » (qui est spécifiée par POSIX.1-2001 mais pas par C99), n est un entier décimal qui spécifie que l'entrée convertie devrait être placée à l'endroit référencé par le n-ième argument pointeur suivant format.
Conversions | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Les spécificateurs de conversion suivant sont disponibles :
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
La valeur EOF est renvoyée si la fin de l'entrée est atteinte avant la première conversion réussie ou si un échec de correspondance survient. EOF est également renvoyé si une erreur de lecture survient, auquel cas l'indicateur d'erreur pour le flux (voir ferror(3)) est positionné et errno est remplie en conséquence
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Le spécificateur q est une notation BSD 4.4 pour long long, alors que ll ou l'utilisation de L dans les conversions entières sont des notations GNU.
Les versions Linux de ces fonctions sont basées sur la bibliothèque libio GNU. Jetez un oeil sur la documentation info de la libc GNU (glibc-1.08) pour une description complète.
BOGUES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Certaines combinaisons de modificateurs de type et de spécificateurs de conversion définis par le C ANSI n'ont pas de sens (par exemple %Ld). Bien qu'elles aient un comportement bien défini sous Linux, ce n'est peut-être pas le cas sur d'autres architectures. Il vaut donc mieux n'utiliser que des modificateurs définis en C ANSI, par exemple, utilisez q à la place de L avec les conversions diouxX ou ll.
L'utilisation q n'est pas la même sous BSD 4.4, car il peut être utilisé avec des conversions de réels de manière équivalente à L. [NDT] La conversion %s devrait toujours être accompagnée d'une longueur maximale de chaîne de caractères. En effet, il existe un risque de débordement de tampon, qui peut conduire à un trou de sécurité important dans un programme Set-UID ou Set-GID.
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 18 novembre 1996, mise à jour par Alain Portal <aportal AT univ-montp2 DOT fr> le 30 juin 2006 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 scanf ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
% | Conversions |
[ | Conversions |
a | Conversions |
c | Conversions |
d | Conversions |
E | Conversions |
f | Conversions |
g | Conversions |
h | Conversions |
hh | Conversions |
i | Conversions |
j | Conversions |
l | Conversions |
n | Conversions |
o | Conversions |
p | Conversions |
q | Conversions |
s | Conversions |
t | Conversions |
u | Conversions |
x | Conversions |
z | Conversions |