C ++ vfscanf () - standardní knihovna C ++

Funkce vfscanf () v C ++ se používá ke čtení dat ze proudu souborů.

Funkce vfscanf () je definována v hlavičkovém souboru.

prototyp vfscanf ()

 int vfscanf (FILE * stream, formát const char *, va_list vlist);

Funkce vfscanf () čte data ze streamu proudu souborů a ukládá hodnoty do příslušných umístění definovaných vlist.

Parametry vfscanf ()

  • stream: Vstupní datový proud souboru, ze kterého se mají číst data.
  • format: Ukazatel na řetězec znaků s nulovým zakončením, který určuje, jak číst vstup. Skládá se ze specifikátorů formátu počínaje%.
  • vlist: Seznam proměnných argumentů, kam mají být hodnoty uloženy
    Formátovací řetězec má následující části:
    • Znaky bez mezer s výjimkou%, z nichž každý spotřebuje jeden stejný znak ze vstupního proudu. Může způsobit selhání funkce, pokud další znak v proudu neporovnává stejné.
    • Znak mezery: Všechny následující znaky mezery jsou považovány za jeden znak mezery. Dále jsou ' n', ' t' a '' považována za stejná.
    • Specifikace převodu: Má následující formát:
      • Počáteční znak%, který určuje začátek
      • Volitelný * zvaný znak potlačující přiřazení. Pokud je tento znak přítomen, vfscanf () nepřiřadí výsledek žádnému přijímajícímu argumentu.
      • Volitelné kladné celé číslo, které určuje maximální šířku pole. Určuje maximální počet znaků, které je vfscanf () povoleno spotřebovat při provádění převodu určeného aktuální specifikací převodu.
      • Volitelný modifikátor délky určující velikost přijímajícího argumentu.
      • Specifikátor formátu převodu.
    Specifikátory formátu
    Specifikátor formátu Popis
    % Odpovídá doslovnému%
    C Shoduje se s jedním nebo více znaky. Pokud je definována šířka, odpovídá přesně šířkovým znakům.
    s Porovnává po sobě jdoucí znaky bez mezer. Pokud je definována šířka, odpovídá přesně šířkovým znakům nebo dokud není nalezen první prázdný znak.
    (soubor) Odpovídá neprázdné posloupnosti znaků z dané sady znaků. Pokud je na začátku množiny, pak jsou všechny znaky, které nejsou v množině, porovnány.
    d Odpovídá desítkovému číslu.
    i Odpovídá celému číslu.
    Ó Odpovídá osmičkové celé číslo bez znaménka.
    X nebo x Porovná hexadecimální celé číslo bez znaménka.
    u Odpovídá desetinnému číslu bez znaménka.
    A nebo a, E nebo e, F nebo f, G nebo g Odpovídá číslu s plovoucí desetinnou čárkou.
    n Vrátí počet dosud přečtených znaků.
    p Odpovídá posloupnosti znaků definované implementací definující ukazatel.

    Obecný formát specifikátoru formátu je tedy:
     Specifikátor% (*) (width) (length)
  • vlist: Seznam argumentů pro příjem vstupů.

vfscanf () Vrátí hodnotu

  • Pokud bude úspěšná, vrátí funkce vfscanf () počet úspěšně přečtených argumentů.
  • Při selhání se vrátí EOF.

Příklad: Jak funguje funkce vfscanf ()?

 #include #include void read(FILE* fp, const char * format,… ) ( va_list args; va_start (args, format); vfscanf (fp, format, args); va_end (args); ) int main () ( char myFriends(5)(20) = ("Robert", "Syd", "Brian", "Eddie", "Ray"); FILE *fp = fopen("example.txt","w+"); char name(20); for (int i=0; i<5; i++) fprintf(fp, "%s ", myFriends(i)); rewind(fp); printf("Here are the list of my friends"); for (int i=0; i<5; i++) ( read(fp, "%s ", &name); printf("%s", name); ) fclose(fp); return 0; )

Při spuštění programu bude možný výstup:

 Zde je seznam mých přátel Robert Syd Brian Eddie Ray

Zajímavé články...