C ++ fwscanf ()

La fonction fwscanf () est définie dansEn tête de fichier.

prototype fwscanf ()

int fwscanf (FILE * stream, const wchar_t * format, ...);

La fonction fwscanf () lit les données du flux de fichiers et stocke les valeurs dans les variables respectives.


Paramètres de fwscanf ()

  • courant: Le flux de fichier d’entrée à partir duquel lire les données.
  • format: Pointeur vers une chaîne de caractères terminée par un zéro qui spécifie comment lire l’entrée. Il se compose de spécificateurs de format commençant par%.
    La chaîne de format comprend les parties suivantes:
    • Caractères non blancs sauf% dont chacun consomme un caractère identique du flux d’entrée. Cela peut entraîner l’échec de la fonction si le caractère suivant du flux ne se compare pas.
    • Caractère d’espacement: tous les caractères d’espacement consécutifs sont traités comme un seul caractère d’espacement. De plus, ‘\ n’, ‘\ t’ et  » sont considérés comme identiques.
    • Spécification de conversion: elle suit le format suivant:
      • Caractère% initial qui spécifie le début
      • Un caractère facultatif * appelé de suppression d’affectation. Si ce caractère est présent, fwscanf () n’affecte le résultat à aucun argument de réception.
      • Un nombre entier positif facultatif qui spécifie la largeur maximale du champ. Il spécifie le nombre maximum de caractères que fwscanf () est autorisé à consommer lors de la conversion spécifiée par la spécification de conversion actuelle.
      • Un modificateur de longueur facultatif spécifiant la taille de l’argument de réception.
      • Un spécificateur de format de conversion.
    Spécificateurs de format
    Spécificateur de format La description
    % Correspond au% littéral
    c Correspond à un ou plusieurs caractères. Si la largeur est définie, correspond exactement aux caractères de largeur.
    s Correspond aux caractères non blancs consécutifs. Si la largeur est définie, correspond exactement aux caractères de largeur ou jusqu’à ce que le premier espace soit trouvé.
    [ensemble] Correspond à une séquence non vide de caractères du jeu de caractères donné. Si ^ est présent au début de l’ensemble, alors tous les caractères qui ne sont pas dans l’ensemble sont mis en correspondance.
    Correspond à un entier décimal.
    je Correspond à un entier.
    o Correspond à un entier octal non signé.
    X ou x Correspond à un entier hexadécimal non signé.
    u Correspond à un entier décimal non signé.
    A ou an, E ou e, F ou f, G ou g Correspond à un nombre à virgule flottante.
    n Renvoie le nombre de caractères lus jusqu’à présent.
    p Correspond à une séquence de caractères définie par l’implémentation définissant un pointeur.

    Ainsi, le format général du spécificateur de format est:

    Spécificateur% [*] [largeur] [longueur]
  • …: Autres arguments supplémentaires pour recevoir des données. Ils se produisent dans une séquence selon le spécificateur de format.

fwscanf () Valeur renvoyée

  • La fonction fwscanf () renvoie le nombre d’arguments de réception attribués avec succès.
  • Si un échec se produit avant que le premier argument de réception ne soit attribué, EOF est renvoyé.

Exemple: comment fonctionne la fonction fwscanf ()?

 #include <cwchar>
#include <clocale>
#include <cwctype>
#include <cstdio>

int main()
{
FILE *fp = fopen("example.txt","w+");
wchar_t str[10], ch;

setlocale(LC_ALL, "en_US.UTF-8");
fwprintf(fp, L"%ls %lc", L"Summation", L'\u2211');
fwprintf(fp, L"%ls %lc", L"Integral", L'\u222b');

rewind(fp);

while((fwscanf(fp, L"%ls %lc", str, &ch))!=EOF)
{
wprintf(L"%lc is %ls\n", ch, str);
}

fclose(fp);
return 0;
}