C/isalnum
Z Wikibooks, biblioteki wolnych podręczników.
Spis treści |
[edytuj] Deklaracja
#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 ispuntc(int c); int isspace(int c); int isupper(int c); int isxdigit(int c);
[edytuj] Argumenty
- 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.
[edytuj] Opis
Funkcje sprawdzają czy podany znak spełnia jakiś konkretny warunek. Biorą 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).
[edytuj] Wartość zwracana
Liczba niezerowa gdy podany argument spełnia konkretny warunek, w przeciwnym wypadku - zero.
[edytuj] Przykład użycia
#include <ctype.h> /* funkcje is* */
#include <locale.h> /* setlocale */
#include <stdio.h> /* printf i scanf */
void identify_char(int c) {
printf(" Litera lub cyfra: %s\n", isalnum (c) ? "tak" : "nie");
#if __STDC_VERSION__ >= 199901L
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");
}
int main() {
unsigned char c;
printf("Naciśnij jakiś klawisz.\n");
if (scanf("%c", &c)==1) {
identify_char(c);
setlocale(LC_ALL, "pl_PL"); /* przystosowanie do warunków polskich */
puts("Po zmianie ustawień języka:");
identify_char(c);
}
return 0;
}