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ètreDescription
*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.
widthCeci spécifie le nombre maximal de caractères à lire lors de l'opération de lecture en cours.
modificateursSpé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)
typeUn 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 :

TypeEntrée qualifiantetype d'argument
%a、%A Lit une valeur à virgule flottante (valide uniquement en C99).float *
%cCaractè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 *
%dEntier décimal : le signe + ou - avant le nombre est facultatif.int *
%e、%E、%f、%F、%g、%GNombre à 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.12e4float *
%iLit des entiers décimaux, octaux et hexadécimaux.int *
%oEntier octal.int *
%sChaî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 *
%uUn entier décimal non signé.unsigned int *
%x、%XEntier 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

#include<stdio.h> int main(void) { int a,b,c; printf("请输入三个数字:"); scanf("%d%d%d",&a,&b,&c); printf("%d,%d,%d\n",a,b,c); return 0; }

让我们编译并运行上述程序,它将在交互模式下产生以下结果:

请输入三个数字:1 2 3
1,2,3

解析说明:

  • 1, &a、&b、&cin&是地址运算符,它分别获取这三个变量的内存地址。
  • 2, %d%d%d它以十进制格式输入三个数值。输入时,可以使用一个或多个空格、Tab 键或 Enter 键来分隔两个数据项。
如果使用,来分隔输入%d,并且在输入相应内容时也需要添加它,:

Exemple

#include<stdio.h> int main(void) { int a,b,c; printf("请输入三个数字:"); scanf("%d, %d, %d",&a,&b,&c); printf("%d, %d, %d\n",a,b,c); return 0; }

让我们编译并运行上述程序,它将在交互模式下产生以下结果:

请输入三个数字:1, 2, 3
1, 2, 3

注意:输入,时必须紧跟在数字后面;数字和,之间不允许有空格。

当使用 %c 进行输入时,空格和“转义字符”都被视为有效字符。

Exemple

#include<stdio.h> int main(void) { char a,b,c; printf("Veuillez saisir trois caractères :"); scanf("%c%c%c",&a,&b,&c); printf("%c,%c,%c\n", a,b,c); return 0; }

让我们编译并运行上述程序,它将在交互模式下产生以下结果:

$ ./a.out 
请输入三个字符:run
r,u,n
$ ./a.out 
请输入三个字符:r u n
r, ,u

L'exemple suivant montre comment recevoir une chaîne :

Exemple

#include <stdio.h> int main() { char str1[20], str2[30]; printf("Veuillez saisir le nom d'utilisateur :"); scanf("%s", str1); printf("Veuillez saisir votre site web :"); scanf("%s", str2); printf("Nom d'utilisateur saisi : %s\n", str1); printf("Site web saisi : %s", str2); return(0); }

让我们编译并运行上述程序,它将在交互模式下产生以下结果:

请输入用户名:admin
请输入您的网站:www.example.com
输入的用户名:admin
输入的网站:www.example.com

Bibliothèque standard C - <stdio.h>

autres extensions