Syntax
#include <ctype.h> /* test for: */ int isalnum(int c); /* alphanumeric character */ int isalpha(int c); /* alphabetic character */ int iscntrl(int c); /* control character */ int isdigit(int c); /* decimal digit */ int isgraph(int c); /* printable character, excluding space */ int islower(int c); /* lowercase character */ int isprint(int c); /* printable character, including space */ int ispunct(int c); /* nonalphanumeric printable character, excluding space */ int isspace(int c); /* whitespace character */ int isupper(int c); /* uppercase character */ int isxdigit(int c); /* hexadecimal digit */Description
These functions test a given integer value c to determine if it has a certain property as defined by the LC_CTYPE category of your current locale. The value of c must be representable as an unsigned char, or EOF.
The functions test for the following:
isalnum
You can redefine any character class in the LC_CTYPE category of the current locale, with some restrictions. See the section about the LC_CTYPE class in the VisualAge C++ Programming Guide for details about these restrictions.
These functions return a nonzero value if the integer satisfies the test condition, or 0 if it does not.
This example analyzes all characters between 0x0 and 0xFF. The output of this example is a 256-line table showing the characters from 0 to 255, indicating whether they have the properties tested for.
#include <stdio.h>#include <ctype.h> #include <locale.h> #define UPPER_LIMIT 0xFF int main(void) { int ch; setlocale(LC_ALL, "En_US"); for (ch = 0; ch <= UPPER_LIMIT; ++ch) { printf("%#04x ", ch); printf("%c", isprint(ch) ? ch : ' '); printf("%s", isalnum(ch) ? " AN" : " "); printf("%s", isalpha(ch) ? " A " : " "); printf("%s", iscntrl(ch) ? " C " : " "); printf("%s", isdigit(ch) ? " D " : " "); printf("%s", isgraph(ch) ? " G " : " "); printf("%s", islower(ch) ? " L " : " "); printf("%s", ispunct(ch) ? " PU" : " "); printf("%s", isspace(ch) ? " S " : " "); printf("%s", isprint(ch) ? " PR" : " "); printf("%s", isupper(ch) ? " U " : " "); printf("%s", isxdigit(ch) ? " H " : " "); putchar('\n'); } return 0;
/**************************************************************************** The output should be similar to : : 0x20 S PR 0x21 ! G PU PR 0x22 " G PU PR 0x23 # G PU PR 0x24 $ G PU PR 0x25 % G PU PR 0x26 & G PU PR 0x27 ' G PU PR 0x28 ( G PU PR 0x29 ) G PU PR 0x2a * G PU PR 0x2b + G PU PR 0x2c , G PU PR 0x2d - G PU PR 0x2e . G PU PR 0x2f / G PU PR 0x30 0 AN D G PR H 0x31 1 AN D G PR H 0x32 2 AN D G PR H 0x33 3 AN D G PR H 0x34 4 AN D G PR H 0x35 5 AN D G PR H 0x36 6 AN D G PR H 0x37 7 AN D G PR H 0x38 8 AN D G PR H 0x39 9 AN D G PR H : ****************************************************************************/ }Related Information