W tym poście chciałbym opisać szereg funkcji, które sprawdzają czy dany znak jest konkretnym elementem. Zostały one zdefiniowane w bibliotece ctype.h. Aby z nich korzystać należy ją oczywiście uwzględnić w nagłówku programu.
Poniżej przedstawiam ich wykaz wraz z opisem zastosowania. Definicja ich jest podobna różnica występuje tylko w nazwie ( int nazwafunkcji(int c) ) np. int isalnum(int c)
- isalnum - sprawdza czy wprowadzony znak jest liczbą bądź literą,
- isalpha - sprawdza czy jest literą
- isblank - sprawdza czy jest spacją bądź tabulacją
- iscntrl - sprawdza czy jest to znak sterujący
- isdigit - sprawdza czy podany znak jest cyfrą
- isgraph - czy jest to znak drukowany różny od spacji
- islower - czy podany znak jest małą literą
- isupper - sprawdza czy znak jest dużą literą
- isprint - czy jest może jakimkolwiek znakiem drukowanym
- ispunkt - sprawdza czy jest to może znak przystankowy (np. kropka, średnik, przecinek)
- isspace - sprawdza czy jest to biały znak np. spacja, wysunięcie \f, przejście do nowej linii '\n', znak powrotu karetki '/r', tabulacja pozioma \t lub tabulacja pionowa \v
- isxdigit - czy jest to cyfra szesnastkowa,
Co do wartości zwracanej przez podane funkcje, występuje 0 gdy dany argument nie spełni założeń oraz inna wartość w przeciwnym przypadku.
Poniżej przedstawiam program, który zawiera wywołania wszystkich opisanych funkcji. Opis kodu umieściłem bezpośrednio w programie w komentarzach.
Program
Poniżej przedstawiam program, który zawiera wywołania wszystkich opisanych funkcji. Opis kodu umieściłem bezpośrednio w programie w komentarzach.
#include <ctype.h> #include <locale.h> #include <stdio.h> void zestawfunkcji(int c); void wypisanie(int c); int main() { //Definicja zmiennej unsigned char c; //Podanie znaku do identyfikacji printf("Podaj znak do zidentyfikowania\n"); //Po podaniu znaku następuje wejście if (scanf("%c", &c)==1) { //Sprawdzenie każdej z funkcji zestawfunkcji(c); printf("------------------------------------------------\n"); wypisanie(c); } return 0; } void zestawfunkcji(int c) { //Wypisanie teksu i sprawdzenie warunku //Gdy wartosc nie jest znakiem następuje wstawienie liczby 0 //W innym przypadku wypisana zostaje naturalna liczba dodatnia printf(" Litera lub cyfra: %s\n", isalnum(c) ? "tak" : "nie"); printf(" Odstep: %s\n", isblank(c) ? "tak" : "nie"); printf(" Znak sterujacy: %s\n", iscntrl(c) ? "tak" : "nie"); printf(" Cyfra dziesietna: %s\n", isdigit(c) ? "tak" : "nie"); printf(" Graficzny: %s\n", isgraph(c) ? "tak" : "nie"); printf(" Mala litera: %s\n", islower(c) ? "tak" : "nie"); printf(" Drukowalny: %s\n", isprint(c) ? "tak" : "nie"); printf(" Przestankowy: %s\n", ispunct(c) ? "tak" : "nie"); printf(" Bialy 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"); } void wypisanie(int c) { //Zadaniem tej funkcji jest wypisanie infrmacji prawdziwych odnosnie //podanego znaku if(isalnum(c) > 0) { printf("Jest to litera lub cyfra, przyjeta wartosc przez funkcje to: %d\n", isalnum(c)); } if(isblank(c) > 0) { printf("Jest to odstep, przyjeta wartosc przez funkcje to: %d\n", isblank(c)); } if(iscntrl(c) > 0) { printf("Jest to znak sterujacy, przyjeta wartosc przez funkcje to: %d\n", iscntrl(c)); } if(isdigit(c) > 0) { printf("Jest to cyfra dziesietna, przyjeta wartosc przez funkcje to: %d\n", isdigit(c)); } if(isgraph(c) > 0) { printf("Jest to znak graficzny, przyjeta wartosc przez funkcje to: %d\n", isgraph(c)); } if(islower(c) > 0) { printf("Jest to mala litera, przyjeta wartosc przez funkcje to: %d\n", islower(c)); } if(isprint(c) > 0) { printf("Jest to znak drukowalny, przyjeta wartosc przez funkcje to: %d\n", isprint(c)); } if(ispunct(c) > 0) { printf("Jest to znak przystankowy, przyjeta wartosc przez funkcje to: %d\n", ispunct(c)); } if(isblank(c) > 0) { printf("Jest to odstep, przyjeta wartosc przez funkcje to: %d\n", isblank(c)); } if(isspace(c) > 0) { printf("Jest to bialy znak, przyjeta wartosc przez funkcje to: %d\n", isspace(c)); } if(isupper(c) > 0) { printf("Jest to wielka litera, przyjeta wartosc przez funkcje to: %d\n", isupper(c)); } if(isxdigit(c) > 0) { printf("Jest to cyfra szesnastkowa, przyjeta wartosc przez funkcje to: %d\n", isxdigit(c)); } }