Fonctions de la bibliothèque C -scanf()
Bibliothèque standard C - <stdio.h>
Description
Fonctions de la bibliothèque Cint scanf(const char *format, ...)Lit une entrée formatée depuis l'entrée standard stdin.
Déclaration
Ce qui suit est la déclaration de la fonction scanf().
int scanf(const char *format, ...)
Paramètre
- format-- Il s'agit d'une chaîne C, contenant un ou plusieurs des éléments suivants :caractères d'espacement, caractères non blancsetspécificateurs de format。
Le spécificateur de format a la forme :
[=%[*][width][modifiers]type=]
L'explication spécifique est la suivante :
| Paramètre | Description |
|---|---|
| * | Il s'agit d'un astérisque facultatif, indiquant que les données sont lues depuis le flux mais peuvent être ignorées, c'est-à-dire qu'elles ne sont pas stockées dans l'argument correspondant. |
| width | Ceci spécifie le nombre maximal de caractères à lire lors de l'opération de lecture en cours. |
| modificateurs | Spécifie une taille différente de celle d'un entier (pour d, i et n), d'un entier non signé (pour o, u et x) ou d'un nombre à virgule flottante (pour e, f et g) pour les données pointées par l'argument supplémentaire correspondant : h : entier court (pour d, i et n), ou entier court non signé (pour o, u et x) l : entier long (pour d, i et n), ou entier long non signé (pour o, u et x), ou double précision (pour e, f et g) L : double précision longue (pour e, f et g) |
| type | Un caractère spécifiant le type de données à lire et la manière dont les données sont lues. Voir la table suivante pour plus de détails. |
Spécificateurs de type scanf :
| Type | Entrée qualifiante | type d'argument |
|---|---|---|
| %a、%A | Lit une valeur à virgule flottante (valide uniquement en C99). | float * |
| %c | Caractère unique : lit le caractère suivant. Si une largeur autre que 1 est spécifiée, la fonction lit width caractères et, via l'argument, les stocke dans des positions consécutives du tableau. Aucun caractère nul n'est ajouté à la fin. | char * |
| %d | Entier décimal : le signe + ou - avant le nombre est facultatif. | int * |
| %e、%E、%f、%F、%g、%G | Nombre à virgule flottante : contient un point décimal, un signe initial facultatif + ou -, un caractère final facultatif e ou E, et un nombre décimal. Deux exemples valides sont -732.103 et 7.12e4 | float * |
| %i | Lit des entiers décimaux, octaux et hexadécimaux. | int * |
| %o | Entier octal. | int * |
| %s | Chaîne de caractères. Lit des caractères consécutifs jusqu'à ce qu'un caractère d'espacement soit rencontré (les caractères d'espacement peuvent être des espaces, des retours à la ligne et des tabulations). | char * |
| %u | Un entier décimal non signé. | unsigned int * |
| %x、%X | Entier hexadécimal. | int * |
| %p | Lit un pointeur. | |
| %[] | Analyse un ensemble de caractères. | |
| %% | Lit le signe %. |
- 附加参数——根据不同的格式字符串,函数可能需要一系列附加参数,每个参数包含一个要插入的值,用于替换格式参数中指定的每个 % 标记。参数的数量应与 % 标记的数量相同。
Valeur de retour
En cas de succès, la fonction renvoie le nombre d'éléments mis en correspondance et affectés avec succès. Si la fin du fichier est atteinte ou si une erreur de lecture se produit, elle renvoie EOF.
Exemple
以下示例演示了 scanf() 函数的用法。
Exemple
让我们编译并运行上述程序,它将在交互模式下产生以下结果:
请输入三个数字:1 2 3 1,2,3
解析说明:
- 1, &a、&b、&cin&是地址运算符,它分别获取这三个变量的内存地址。
- 2, %d%d%d它以十进制格式输入三个数值。输入时,可以使用一个或多个空格、Tab 键或 Enter 键来分隔两个数据项。
Exemple
让我们编译并运行上述程序,它将在交互模式下产生以下结果:
请输入三个数字:1, 2, 3 1, 2, 3
注意:输入,时必须紧跟在数字后面;数字和,之间不允许有空格。
当使用 %c 进行输入时,空格和“转义字符”都被视为有效字符。
Exemple
让我们编译并运行上述程序,它将在交互模式下产生以下结果:
$ ./a.out 请输入三个字符:run r,u,n $ ./a.out 请输入三个字符:r u n r, ,u
L'exemple suivant montre comment recevoir une chaîne :
Exemple
让我们编译并运行上述程序,它将在交互模式下产生以下结果:
请输入用户名:admin 请输入您的网站:www.example.com 输入的用户名:admin 输入的网站:www.example.comautres extensions