Funkce vscanf () v C ++ se používá ke čtení dat ze stdin.
Funkce vscanf () je definována v hlavičkovém souboru.
prototyp vscanf ()
int vscanf (formát const char *, va_list vlist);
Funkce vscanf () čte data ze stdin a ukládá hodnoty do příslušných umístění, jak je definováno vlist.
Parametry vscanf ()
- 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%.
Řetězec formátu 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, vscanf () 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é smí vscanf () 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á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ů.
vscanf () Návratová hodnota
- Pokud je úspěšná, funkce vscanf () vrací počet úspěšně načtených argumentů.
- Při selhání se vrátí EOF.
Příklad: Jak funguje funkce vscanf ()?
#include #include void read( const char * format,… ) ( va_list args; va_start (args, format); vscanf (format, args); va_end (args); ) int main () ( float marks; char subj(50); printf("Enter subject's name and marks obtained: "); read(" %s %f", subj,&marks); printf("You scored %.2f in %s", marks, subj); return 0; )
Při spuštění programu bude možný výstup:
Zadejte název subjektu a získané známky: matematika 12 Z matematiky jste získali 12,00