English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 de la fonction fscanf()
int fscanf(FILE *flux, const char *format, ...)
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ètres | Description |
---|---|
* | 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. |
largeur | Cela spécifie le nombre maximum de caractères à lire lors de l'opération de lecture en cours. |
modificateurs | Dé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) |
type | Un 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 type | entrée qualifiée | de type |
---|---|---|
c | Un 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 * |
d | Entier décimal : le préfixe + ou - est optionnel. | int * |
e,E,f,g,G | Nombre 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.12e4 | float * |
o | Entier octal. | int * |
s | Chaî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 * |
u | Entier décimal non signé. | unsigned int * |
x,X | Entier 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 %.
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.
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|