C/isalnum: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Kj (dyskusja | edycje)
mNie podano opisu zmian
Mina86 (dyskusja | edycje)
połączone wszstkie funkcje iscostam, dopisane to co brakowało, poprawione karygodne błędy w opisach
Linia 1:
===Deklaracja===
: #include <[[C/Biblioteka standardowa/Indeks tematyczny#ctype.h|ctype.h]]>
:int isalnum(char c);
: int isalnum(charint 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);
 
===Opis===
Funkcje sprawdzają czy podany znak spełnia jakiś konkretny warunek. Biorą pod uwagę [[C/Biblioteka standardowa/Indeks tematyczny#locale.h|ustawienia języka]] i dla różnych znaków w różnych ''locale''<nowiki>'</nowiki>ach mogą zwracać różne wartości.
 
* <tt>isalnum</tt> sprawdza czy znak jest liczbą lub literą,
===Plik nagłówkowy===
* <tt>isalpha</tt> sprawdza czy znak jest literą,
:[[C/Biblioteka standardowa/Indeks tematyczny#ctype.h|ctype.h]]
* <tt>isblank</tt> sprawdza czy znak jest znakiem odstępu służącym do oddzielania wyrazów (standardowymi znakami odstępu są spacja i znak tabulacji),
* <tt>iscntrl</tt> sprawdza czy znak jest znakiem sterującym,
* <tt>isdigit</tt> sprawdza czy znak jest cyfrą dziesiętna,
* <tt>isgraph</tt> sprawdza czy znak jest znakiem drukowalnym różnym od spacji,
* <tt>islower</tt> sprawdza czy znak jest małą literą,
* <tt>isprint</tt> sprawdza czy znak jest znakiem drukowalnym (włączając w to spację),
* <tt>ispunct</tt> 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),
* <tt>isspace</tt> 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'),
* <tt>isupper</tt> sprawdza czy znak jest dużą literą,
* <tt>isxdigit</tt> 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).
 
===OpisArgumenty===
* <tt>c</tt> 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.
:Funkcja sprawdza czy podany argument jest znakiem alfanumerycznym, tj. liczbą lub cyfrą.
 
 
===Wartość zwracana===
:Liczba niezerowa gdy podany argument jestspełnia znakiemkonkretny alfanumerycznymwarunek, w przeciwnym wypadku - zero.
 
 
===Przykład użycia===
#include <ctype.h> /* funkcje is* */
#include <stdiolocale.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) {
if (isalnumidentify_char(c));
setlocale(LC_ALL, "pl_PL"); /* przystosowanie do warunków polskich */
printf("Ten znak jest liczbą lub cyfrą.\n");
puts("Po zmianie ustawień języka:");
else
identify_char(c);
printf("Ten znak nie jest ani liczbą ani cyfrą.\n");
}
return 0;
}
 
===Zobacz też===
* [[C/tolower|tolower]], [[C/toupper|toupper]]
* [[C/isalpha|isalpha]]
* [[C/iscntrl|iscntrl]]
* [[C/isdigit|isdigit]]