C/isalnum

< C
(Przekierowano z C/iscntrl)

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;
}

Zobacz też edytuj