English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base du langage C

Contrôle de flux de langage C

Fonctions en C

Tableaux en C

Pointeurs en C

Chains de caractères en C

Structure de langage C

Fichier de langage C

Autres C

Manuel de référence du langage C

Utilisation et exemple de la fonction fscanf() de la bibliothèque C

Bibliothèque standard - <stdio.h>

Fonction de bibliothèque C int fscanf(FILE *flux, const char *format, ...) Lire l'entrée formatée à partir du flux stream.

Déclaration

Déclaration de la fonction fscanf()

int fscanf(FILE *flux, const char *format, ...)

Paramètres

  • flux -- C'est un pointeur vers un objet FILE, qui identifie le flux.

  • Format -- C'est une chaîne de caractères C, qui contient l'un ou plusieurs des éléments suivants :Caractères d'espace, caractères non d'espace et Formateur
    Le format du formateur est de la forme [=%[*][largeur][modificateurs]type=],具体讲解如下:

ParamètresDescription
*C'est un astérisque optionnel, indiquant que les données sont lues à partir du flux stream, mais peuvent être ignorées, c'est-à-dire qu'elles ne sont pas stockées dans les paramètres correspondants.
largeurCela spécifie le nombre maximum de caractères à lire lors de l'opération de lecture en cours.
modificateursDéfinir une taille différente de l'entier (pour d, i et n), du type entier sans signe (pour o, u et x) ou du type flottant (pour e, f et g) pour les données pointées par les paramètres supplémentaires : h : short (pour d, i et n), ou unsigned short (pour o, u et x) l : long (pour d, i et n), ou unsigned long (pour o, u et x), ou double (pour e, f et g) L : long double (pour e, f et g)
typeUn caractère, indiquant le type de données à lire et la manière de lire les données. Voir le tableau suivant pour plus de détails.

fscanf type specifier :

de typeentrée qualifiéede type
cUn caractère : lit le prochain caractère. Si un paramètre non 1 de la largeur width, la fonction lit width caractères et les stocke dans des positions consécutives de l'array via les paramètres, sans ajouter de caractères de fin de chaîne à la fin.char *
dEntier décimal : le préfixe + ou - est optionnel.int *
e,E,f,g,GNombre en virgule flottante : contient un point décimal, un signe optionnel + ou -d'un caractère optionnel e ou E, suivi d'un nombre décimal. Deux exemples valides -732.103 et 7.12e4float *
oEntier octal.int *
sChaîne. Cela lit des caractères consécutifs jusqu'à ce qu'un caractère d'espace soit rencontré (les caractères d'espace peuvent être des espaces, des retours chariot et des tabulations).char *
uEntier décimal non signé.unsigned int *
x,XEntier hexadécimal.int *
  • Paramètres supplémentaires -- Selon la chaîne de format, la fonction peut nécessiter une série de paramètres supplémentaires, chaque paramètre contient une valeur à insérer, qui remplace chaque étiquette % du format. Le nombre de paramètres doit correspondre au nombre d'étiquettes %.

Valeur de retour

Si la fonction réussit, elle renvoie le nombre de correspondances et d'attributions réussies. Si elle atteint la fin du fichier ou qu'une erreur de lecture se produit, elle renvoie EOF.

Exemple en ligne

Le siguiente ejemplo muestra el uso de la función fscanf().

#include <stdio.h>
#include <stdlib.h>
int main()
{
   char str1[10], str2[10], str3[10];
   int year;
   FILE * fp;
   fp = fopen("file.txt", "w+");
   fputs("Nous sommes dans 2009", fp);
   
   rewind(fp);
   fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
   
   printf("Lire une chaîne1 |%s|\n", str1 );
   printf("Lire une chaîne2 |%s|\n", str2 );
   printf("Lire une chaîne3 |%s|\n", str3 );
   printf("Lire l'entier |%d|\n", year);
   fclose(fp);
   
   return(0);
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant :

Lecture d'une chaîne de caractères1 |We|
Lecture d'une chaîne de caractères2 |are|
Lecture d'une chaîne de caractères3 |in|
Lecture d'un entier |2009|

Bibliothèque standard - <stdio.h>