C ++ vfwscanf () - Bibliothèque standard C ++

La fonction vfwscanf () en C ++ est utilisée pour lire une chaîne de caractères large à partir d'un flux de fichiers.

La fonction vfwscanf () est définie dans le fichier d'en-tête.

prototype vfwscanf ()

 int vfwscanf (FILE * stream, const wchar_t * format, va_list vlist);

La fonction vfwscanf () lit les données du flux de fichiers et stocke les valeurs dans les emplacements respectifs définis par vlist.

Paramètres de vfwscanf ()

  • stream: flux de fichier d'entrée à partir duquel lire les données.
  • format: pointeur vers une chaîne de caractères large terminée par null 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, vfwscanf () 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 vfwscanf () 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 a, 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)
  • vlist: une liste d'arguments pour recevoir les entrées.

vfwscanf () Valeur de retour

  • En cas de succès, la fonction vfwscanf () renvoie le nombre d'arguments lus avec succès.
  • En cas d'échec, EOF est renvoyé.

Exemple: comment fonctionne la fonction vfwscanf ()?

 #include #include #include #include void read( FILE *fp, const wchar_t* format,… ) ( va_list args; va_start (args, format); vfwscanf (fp, format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0915u0916u0917u0918u0919"; wchar_t names(5)(5) = (L"Ka", L"Kha", L"Ga", L"Gha", L"Nga"); FILE *fp = fopen("example.txt","w+"); for (int i=0; i<5; i++) fwprintf(fp, L"%lc %ls ", symbol(i), names(i)); rewind(fp); wchar_t ch, str(5); for (int i=0; i<5; i++) ( read(fp, L"%lc %ls ", &ch, str); wprintf(L"%lc - %ls", ch, str); ) fclose(fp); return 0; )

Lorsque vous exécutez le programme, une sortie possible sera:

 क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga

Articles intéressants...