C/isalnum
Wygląd
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
[edytuj]Funkcje 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
[edytuj]Liczba 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;
}