Pole specifikace formátu: scanf
a wscanf
funkce
Zde uvedené informace platí pro celou scanf
řadu funkcí, včetně zabezpečených verzí. Popisuje symboly používané k tomu, aby funkcím scanf
řekly, jak analyzovat vstupní datový proud, například vstupní datový proud stdin
, do hodnot, které jsou vloženy do proměnných programu.
Argument format
je řetězec, který určuje interpretaci vstupu a může obsahovat jednu nebo více z těchto hodnot:
Prázdné znaky: prázdné (
\t
) nebo nový řádek (\n
). Prázdný znak způsobíscanf
čtení, ale ne uložení všech po sobě jdoucích prázdných znaků ve vstupu až do dalšího prázdného znaku. Jeden prázdný znak ve formátu odpovídá libovolnému číslu (včetně 0) a kombinaci prázdných znaků ve vstupu.Neprázdné znaky s výjimkou znaku procenta (
%
). Neprázdný znak způsobíscanf
čtení, ale ne uložení odpovídajícího neprázdného znaku. Pokud se další znak ve vstupním streamu neshoduje,scanf
ukončí se.Specifikace formátu zavedené znakem procenta (
%
). Specifikace formátu způsobíscanf
čtení a převod znaků ve vstupu na hodnotu zadaného typu. Hodnota je přiřazena argumentu v seznamu argumentů.Specifikace formátu má následující tvar:
%
[*
][][width
{h
ll
||L
l
|I64
|}]type
Zde,
width
, ,l
h
,ll
,I64
aL
představujíscanf
specifikaci šířky atype
představujescanf
typ pole znak.
Řetězec argumentu format
se čte zleva doprava. Očekává se, že specifikace znaků mimo formát odpovídají sekvenci znaků ve vstupním datovém proudu. Odpovídající znaky ve vstupním datovém proudu se prohledávají, ale neukládají se. Pokud je znak ve vstupním datovém proudu v konfliktu se specifikací formátu, scanf
ukončí se a znak zůstane ve vstupním streamu, jako by nebyl přečten.
Při výskytu první specifikace formátu se hodnota prvního vstupního pole převede podle této specifikace. Tato hodnota je uložena v umístění určeném prvním argumentem, který následuje za argumentem format
. Druhá specifikace formátu způsobí, že druhé vstupní pole se převede a uloží v dalším argumentu atd. až na konec řetězce formátu.
Vstupní pole je definováno takto: Všechny znaky až do prvního prázdného znaku (mezera, tabulátor nebo nový řádek) nebo až do prvního znaku, který nelze převést podle specifikace formátu nebo dokud nedosáhne šířky pole (pokud je zadáno). Pokud pro dané specifikace existuje příliš mnoho argumentů, jsou extra argumenty vyhodnoceny, ale ignorovány. Výsledky jsou nepředvídatelné, pokud pro specifikaci formátu není dostatek argumentů.
Každé pole specifikace formátu je jeden znak nebo číslo, které označuje konkrétní možnost formátu. Znak type
, který se zobrazí za posledním volitelným polem formátu, určuje, zda je vstupní pole interpretováno jako znak, řetězec nebo číslo.
Nejjednodušší specifikace formátu obsahuje pouze znak procenta a type
znak (například %s
). Pokud znak procenta (%
) následuje znak, který nemá žádný význam jako znak ovládacího prvku formátu, tento znak a následující znaky (až do dalšího znaku procenta) se považují za běžnou posloupnost znaků. To znamená, že jsou považovány za posloupnost znaků, které musí odpovídat vstupu. Chcete-li například určit, že znak procenta má být vstupní, použijte %%
.
Hvězdička (*
) následující po znaku procenta potlačí přiřazení dalšího vstupního pole, které je interpretováno jako pole zadaného typu. Pole se prohledá, ale neuloží do argumentu.
Zabezpečené verze (ty s _s
příponou) scanf
řady funkcí vyžadují každý parametr typu c
, C
, nebo s
S
[
mít parametr velikosti vyrovnávací paměti předaný okamžitě za sebou. Další informace ozabezpečenýchch scanf
scanf_s
_scanf_s_l
wscanf_s
_wscanf_s_l
Viz také
scanf
Specifikace šířky
scanf
Znaky pole typu
scanf
, _scanf_l
, , wscanf
_wscanf_l
scanf_s
, _scanf_s_l
, , wscanf_s
_wscanf_s_l