Udostępnij za pośrednictwem


Pola Specyfikacja formatu: funkcje scanf i wscanf

Informacje w tym miejscu ma zastosowanie do całego scanf rodziny funkcji, w tym bezpiecznej wersji i opisano symbole, używany w celu poinformowania scanf funkcje jak analizować strumienia wejściowego, takich jak strumienia wejściowego stdin dla scanf, do wartości, które są wstawiane do zmiennych programu.

Specyfikacja formatu ma następującą postać:

%*] width [{h | l | ll | JEST NIEOBSŁUGIWANA | L}]type

format Argument określa interpretacji danych wejściowych i może zawierać jedną lub więcej z następujących czynności:

  • Odstępy: pusty (""); TAB ("\t"); lub nowego wiersza (\n).Powoduje, że znak białego odstępu scanf do odczytu, ale nie przechowywać, wszystkie kolejne znaki spacji w danych wejściowych do następnego znaku non–white miejsca.Jeden znak spacji w formacie pasuje do dowolnego numeru (w tym 0) i kombinacji znaków spacji w danych wejściowych.

  • Przestrzeń non–White znaków, z wyjątkiem znaku procentu (%).Powoduje, że znak spacji non–white scanf do odczytu, ale nie przechowywać, pasującego znaku non–white miejsca.Jeśli następny znak w strumieniu wejściowym nie pasują do siebie, scanf kończy działanie.

  • Format specyfikacji, wprowadzone przez znak procent (%).Specyfikacja formatu powoduje, że scanf do odczytu i konwertować znaki na wejściu wartości określonego typu.Wartość jest przypisana do argumentu na liście argumentów.

Format jest odczytywany od lewej do prawej.Znaki spoza specyfikacji formatu oczekuje się odpowiadał sekwencji znaków w strumieniu wejściowym; pasujących znaków w strumieniu wejściowym są skanowane, ale nie przechowywane.Jeśli znak w strumieniu wejściowym jest w konflikcie z specyfikacją formatu scanf kończy działanie, a znak pozostanie w strumieniu wejściowym tak, jakby miał nie została przeczytana.

Po napotkaniu pierwszego specyfikacja formatu, wartość pierwszego pola wejściowego jest konwertowane zgodnie z tą specyfikacją i przechowywane w lokalizacji określonej w pierwszym argument.Drugie pole wejściowe konwertowane i przechowywane w drugim powoduje, że drugi specyfikacja formatu argument, i tak dalej aż do końca ciągu formatu.

Pole wejściowe jest zdefiniowana jako wszystkie znaki aż do pierwszego znaku spacji (miejsca, tab lub nowego wiersza) lub do pierwszego znaku, który nie mogą być konwertowane zgodnie ze specyfikacją formatu lub aż do szerokości pola (Jeśli określono) zostanie osiągnięty.Jeśli zbyt wiele argumentów dla danej specyfikacji dodatkowe argumenty są oceniane, ale ignorowane.Wyniki są nieprzewidywalne, jeśli są wystarczająco dużo argumentów dla specyfikacji formatu.

Każde pole specyfikacja formatu jest pojedynczy znak lub numer, oznaczający opcja określonym formacie.type Znak, który pojawia się po ostatnim polu format opcjonalne, określa, czy pole wejściowe jest interpretowana jako znak, ciąg lub liczbę.

Najprostszy specyfikacja formatu zawiera znak procent i type znaków (na przykład, %s).Jeśli znak procent (%) jest zakończony znakiem znak, że ma żadnego znaczenia, jako znaku kontrolnego formatu, że znak oraz następujące znaki (maksymalnie do następnego znaku procentu) są traktowane jako zwykłe sekwencję znaków, oznacza to, sekwencja znaków, które muszą być zgodne dane wejściowe.Na przykład, aby określić procent znak ma być dane wejściowe, należy użyć %%.

Gwiazdka (*) po znaku procentu pomija przypisania następne pole wejściowe jest interpretowana jako pola określonego typu.Pole jest skanowany, ale nie przechowywane.

Bezpieczne wersje (z _s sufiks) z scanf rodziny funkcje wymagają, że parametr rozmiaru buforu przekazywane niezwłocznie po każdym parametrem typu c, C, s, S lub [.Więcej informacji na temat bezpiecznych wersji scanf rodziny funkcji, zobacz scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.

Zobacz też

Informacje

scanf Specyfikacja szerokość

scanf znaki pola typu

scanf, _scanf_l, wscanf, _wscanf_l

scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l