Deklaracja
edytuj#include <ctype.h> int isalnum(int c); int isalpha(int c); int isblank(int c); int iscntrl(int c); int isdigit(int c); int isgraph(int c); int islower(int c); int isprint(int c); int ispunct(int c); int isspace(int c); int isupper(int c); int isxdigit(int c);
Argumenty
edytuj- c
- wartość znaku reprezentowana w jako typ unsigned char lub wartość makra EOF. Z tego powodu, przed przekazaniem funkcji argumentu typu char lub signed char należy go zrzutować na typ unsigned char lub unsigned int.
Opis
edytujFunkcje sprawdzają czy podany znak spełnia jakiś konkretny warunek. Biorąc pod uwagę ustawienia języka i dla różnych znaków w różnych locale'ach mogą zwracać różne wartości.
- isalnum
- sprawdza czy znak jest liczbą lub literą,
- isalpha
- sprawdza czy znak jest literą,
- isblank
- sprawdza czy znak jest znakiem odstępu służącym do oddzielania wyrazów (standardowymi znakami odstępu są spacja i znak tabulacji),
- iscntrl
- sprawdza czy znak jest znakiem sterującym,
- isdigit
- sprawdza czy znak jest cyfrą dziesiętna,
- isgraph
- sprawdza czy znak jest znakiem drukowalnym różnym od spacji,
- islower
- sprawdza czy znak jest małą literą,
- isprint
- sprawdza czy znak jest znakiem drukowalnym (włączając w to spację),
- ispunct
- sprawdza czy znak jest znakiem przestankowym, dla którego ani isspace ani isalnum nie są prawdziwe (standardowo są to wszystkie znaki drukowalne, dla których te funkcje zwracają zero),
- isspace
- sprawdza czy znak jest tzw. białym znakiem (standardowymi białymi znakami są: spacja, wysunięcie strony '\f', znak przejścia do nowej linii '\n', znak powrotu karetki '\r', tabulacja pozioma '\t' i tabulacja pionowa '\v'),
- isupper
- sprawdza czy znak jest dużą literą,
- isxdigit
- sprawdza czy znak jest cyfrą szesnastkową, tj. cyfrą dziesiętną lub literą od 'a' do 'f' niezależnie od wielkości.
Funkcja isblank nie występowała w oryginalnym standardzie ANSI C z 1989 roku (tzw. C89) i została dodana dopiero w nowszym standardzie z 1999 roku (tzw. C99).
Wartość zwracana
edytujLiczba niezerowa gdy podany argument spełnia konkretny warunek, w przeciwnym wypadku - zero.
Przykład użycia
edytuj#include <ctype.h> // funkcje is*
#include <locale.h> // setlocale
#include <stdio.h> // printf i scanf
void identify_char(unsigned char c)
{
printf(" Litera lub cyfra: %s\n", isalnum (c) ? "tak" : "nie");
#if __STDC_VERSION__ >= 199901L
// w przypadku standardu C99
printf(" Odstęp: %s\n", isblank (c) ? "tak" : "nie");
#endif
printf(" Znak sterujący: %s\n", iscntrl (c) ? "tak" : "nie");
printf(" Cyfra dziesiętna: %s\n", isdigit (c) ? "tak" : "nie");
printf(" Graficzny: %s\n", isgraph (c) ? "tak" : "nie");
printf(" Mała litera: %s\n", islower (c) ? "tak" : "nie");
printf(" Drukowalny: %s\n", isprint (c) ? "tak" : "nie");
printf(" Przestankowy: %s\n", ispunct (c) ? "tak" : "nie");
printf(" Biały znak: %s\n", isspace (c) ? "tak" : "nie");
printf(" Wielka litera: %s\n", isupper (c) ? "tak" : "nie");
printf(" Cyfra szesnastkowa: %s\n", isxdigit(c) ? "tak" : "nie");
printf(" Litera: %s\n", isalpha (c) ? "tak" : "nie");
}
int main()
{
unsigned char c;
puts("Naciśnij jakiś klawisz.");
if (scanf("%c", &c) == 1)
{
identify_char(c);
setlocale(LC_ALL, "pl_PL"); // przystosowanie do warunków polskich
puts("Po zmianie ustawien jezyka:");
identify_char(c);
}
return 0;
}