Znaky pole typu scanf
Následující informace se vztahují na jakoukoli scanf řady funkcí, včetně zabezpečené verze, jako například scanf_s.
type Znak je jediný požadovaný formát pole; Zobrazí se po všech volitelný formát polí.type Znak určuje, zda přidružené argumentu je interpretován jako řetězec znaků nebo číslo.
Zadejte znaky pro funkce scanf
Znak |
Typ zadání |
Typ argumentu |
Velikost argument v zabezpečenou verzí? |
---|---|---|---|
c |
Znak.Při použití s scanf funkce, určuje jednobajtových znaků; Při použití s wscanf funkce, určuje širokého znaku.Prázdné znaky, které jsou obvykle vynecháno při čtení c je zadán.Číst další znak jednobajtové non prázdné místo, použijte %1s; Číst další non prázdný široký znak, pomocí %1ws. |
Ukazatel na char s scanf funkce, ukazatel na wchar_t s wscanf funkce. |
Požadováno.Velikost neobsahuje pole null zakončení. |
C |
Naproti velikost znaků.Při použití s scanf funkce, určuje širokého znaku; Při použití s wscanf funkce, určuje jednobajtových znaků.Prázdné znaky, které jsou obvykle vynecháno při čtení C je zadán.Číst další znak jednobajtové non prázdné místo, použijte %1s; Číst další non prázdný široký znak, pomocí %1ws. |
Ukazatel na wchar_t s scanf funkce, ukazatel na char s wscanf funkce. |
Požadováno.Velikost argument neobsahuje pole null zakončení. |
d |
Desítkové celé číslo. |
Ukazatel na int. |
Ne. |
i |
Celé číslo.Šestnáctkové Pokud vstupní řetězec začíná "0 x" nebo "0 X" osmičkové řetězec začíná "0", jinak desetinné číslo. |
Ukazatel na int. |
Ne. |
o |
Osmičkové číslo. |
Ukazatel na int. |
Ne. |
u |
Desítkové celé číslo bez znaménka. |
Pointer to unsignedint. |
Ne. |
x |
Šestnáctkové číslo. |
Ukazatel na int. |
Ne. |
e, E, f, g, G |
S plovoucí desetinnou čárkou, skládající se z nepovinné znaménko (+ nebo -), sérii jedné nebo více desítkových číslic obsahujících desetinnou čárku a volitelné exponent ("e" nebo "E") a volitelně podepsané celočíselnou hodnotu. |
Ukazatel na float. |
Ne. |
n |
Žádný vstup čtení z datového proudu nebo vyrovnávací paměti. |
Ukazatel na int, do které uložené počet znaků je úspěšně čtení z datového proudu nebo vyrovnávací paměti až do tohoto bodu v aktuální volání scanf funkce nebo wscanf funkce. |
Ne. |
s |
Řetězec do první prázdné znaky (mezery, kartu nebo nový řádek).Čtení řetězců, které nejsou odděleny znaky, použijte sadu hranaté závorky ([ ]), jak je popsáno v Specifikace šířky scanf. |
Při použití s scanf funkce, označuje pole jednobajtových znaků; Při použití s wscanf funkce, označuje pole širokého znaku.V obou případech musí být dostatečně velká pro vstupní pole plus ukončující znak null, která je automaticky přidána pole znaků. |
Požadováno.Velikost zahrnuje prostor pro null zakončení. |
S |
Naopak velikost řetězec znaků do první prázdné znaky (mezery, kartu nebo nový řádek).Čtení řetězců, které nejsou odděleny znaky, použijte sadu hranaté závorky ([ ]), jak je popsáno v Specifikace šířky scanf. |
Při použití s scanf funkce, označuje pole širokého znaku; Při použití s wscanf funkce, znamená jeden bajt – znak pole.V obou případech musí být dostatečně velká pro vstupní pole plus ukončující znak null, která je automaticky přidána pole znaků. |
Požadováno.Velikost zahrnuje prostor pro null zakončení. |
a a A specifikátory (viz Znaky pole typu printf) nejsou k dispozici s scanf.
Velikost argumenty, v případě potřeby by měly být předány v seznamu parametrů bezprostředně následující argument, na něž se vztahují.Například následující kód:
char string1[11], string2[9];
scanf("%10s %8s", string1, 11, string2, 9);
načte řetězec o maximální délce 10 do string1a řetězec s maximální délkou 8 do string2.Velikost vyrovnávací paměti musí být, že musí být alespoň jeden větší než šířka specifikace od místa vyhrazena pro null zakončení.
Řetězec formátu může zpracovávat vstupní znak jednobajtové a široký bez ohledu na to, zda je použit jednobajtových znaků nebo širokého znaku verze funkce.Tedy číst jednobajtových nebo široké znaky s scanf funkce a wscanf funkce a použít specifikátory formátu takto.
Čtení znaků jako |
Pomocí této funkce |
Se tyto specifikátory formátu |
---|---|---|
jeden bajt |
scanffunkce |
c, hc, nebo hC |
jeden bajt |
wscanffunkce |
C, hc, nebo hC |
široký |
wscanffunkce |
c, lc, nebo lC |
široký |
scanffunkce |
C, lc, nebo lC |
Prohledávání řetězce s scanf funkce, a wscanf funkce, pomocí výše uvedené tabulky typ specifikátoru formátu s a S místo c a C.