Ponad dwa tygodnie temu poświęciłem artykuł na temat funkcji "printf". Ze względu na mocno ograniczony czas, pozwólcie że teraz napiszę to samo tylko o funkcji "scanf" w języku C, 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.
Tweet |
KRÓTKI OPIS FUNKCJI "SCANF" W JĘZYKU C
Tytułowa funkcja umożliwia przekazywanie wartości do zmiennych w postaci wprowadzanych znaków z klawiatury (tak naprawdę to dotyczy strumienia wejściowego "stdin"). Przy użyciu adresu zmiennej (z wyjątkiem tablic i łańcuchów 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.
Funkcja "scanf" w języku C pobiera od strumienia wejściowego dane o konkretnym typie zwracając uwagę na prawidłowość.
SPECYFIKATORY FORMATU FUNKCJI
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ć. Taka "ściągawka" dla wszystkich, którzy mają problemy z przypisaniem odpowiedniego formatowania dla funkcji "scanf".
SPECYFIKATOR | ZNACZENIE |
%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" w języku C i jej specyfikatorach.