Znowu sięgnę do historii i do języka C. Ponad dwa tygodnie temu poświęciłem artykuł na temat funkcji "printf" i jej specyfikatorom formatu. Ze względu na mocno ograniczony czas pozwólcie, że teraz napiszę to samo tylko o funkcji "scanf", która również jest częścią standardowej obsługi wejścia-wyjścia. Jeśli jest jakiś problem z określeniem specyfikatora formatu, po prostu zjedźcie na dół i popatrzcie na tabelkę. Być może, że właśnie w niej znajduje się odpowiedź na Wasze pytanie.

KRÓTKI OPIS FUNKCJI "SCANF"

Tytułowa metoda umożliwia przekazywanie wartości do zmiennych w postaci wprowadzanych znaków z klawiatury (tak naprawdę to dotyczy strumienia wejściowego "stdin", może kiedyś o tym napiszę). Przy użyciu adresu zmiennej (z wyjątkiem łańcucha znaków) następuje skonwertowanie wartości na odpowiedni typ. Oczywiście zanim to nastąpi, wprowadzony ciąg znaków musi być jeszcze uprzednio zweryfikowany, aby nie doszło do sprzeczności. Jest często wykorzystywana w pętli "while" dla wprowadzania wielu wartości podczas jednego działania. Dzięki temu, że zwraca wartość liczbową oznaczającą liczbę prawidłowo odczytanych ciągów, doskonale pasuje do osadzania w warunek dla zapewnienia walidacji danych.

scanf

Funkcja "scanf" pobiera od strumienia wejściowego dane o konkretnym typie zwracając uwagę na prawidłowość.

SPECYFIKATORY FORMATU FUNKCJI "SCANF"

Tak jak w poprzednim wpisie tego typu, artykuł ten nie jest dla początkujących w celu tłumaczenia co to jest i jak to wykorzystywać. Na razie to jest wyłącznie "ściągawka" dla wszystkich, którzy mają problemy z przypisaniem odpowiedniego formatowania dla funkcji.

Specyfikator Przeznaczenie
%hd liczba całkowita w systemie dziesiętnym ze znakiem (signed short int)
%hu liczba całkowita w systemie dziesiętnym bez znaku (unsigned short int)
%d / %i liczba całkowita w systemie dziesiętnym ze znakiem (signed int)
%u liczba całkowita w systemie dziesiętnym bez znaku (unsigned int)
%ld liczba całkowita w systemie dziesiętnym ze znakiem (signed long int)
%lu liczba całkowita w systemie dziesiętnym bez znaku (unsigned long int)
%lld liczba całkowita w systemie dziesiętnym ze znakiem (signed long long int)
%llu liczba całkowita w systemie dziesiętnym bez znaku (unsigned long long int)
%o liczba całkowita w systemie oktalnym (ósemkowym)
%x / %X liczba całkowita w systemie heksadecymalnym (szesnastkowym)
%f liczba zmiennoprzecinkowa w systemie dziesiętnym (float)
%lf liczba zmiennoprzecinkowa w systemie dziesiętnym (double)
%Lf liczba zmiennoprzecinkowa w systemie dziesiętnym (long double)
%c pojedynczy znak
%s łańcuch znaków bez spacji
%p wskaźnik jako adres (*)

Koniec o funkcji "scanf" i o jej specyfikatorach. Jeszcze dzisiaj za parę godzin przedstawię artykuł na dużo poważniejszy temat. Chodzi o szablon do moich gier. Szczegóły wkrótce.

PODOBNE ARTYKUŁY