9.3. Character handling
There are a variety of functions provided for testing and
mapping characters. The testing functions, which are
described first, allow you to test if a character is of a
particular type, such as alphabetic, upper or lower case,
numeric, a control character, a punctuation mark, printable
or not and so on. The character testing functions return an
integer, either zero if the character supplied is not of the
category specified, or non-zero if it was. The functions
all take an integer argument, which should either be an int,
the value of which should be representable as unsigned char ,
or the integer constant EOF , as returned from functions such
as getchar() . The behaviour is undefined if it is not.
These functions depend on the program's locale setting.
A printing character is a member of an implementation
defined character set. Each printing character occupies one
printing position. A control character is a member of an
implementation defined character set, each of which is not a
printing character. If the 7-bit ASCII character set is used, the printing
characters are those that lie between space (0x20) and tilde
(0x7e) , the control characters are
those between NUL (0x0) and US (0x1f) ,
and the character DEL (0x7f) .
The following is a summary of all the character testing
functions. The header <ctype.h> must be included before
any of them is used.
isalnum(int c)
- True if
c is alphabetic or a digit; specifically
(isalpha(c)||isdigit(c)) .
isalpha(int c)
-
True if (isupper(c)||islower(c)) .
Also true for an implementation-defined set of characters
which do not return true results from any of iscntrl,
isdigit, ispunct or isspace. In the C locale, this extra
set of characters is empty.
iscntrl(int c)
- True if
c is a control character.
isdigit(int c)
- True if
c is a decimal digit.
isgraph(int c)
- True if
c is any printing character except space.
islower(int c)
- True if
c is a lower case alphabetic letter.
Also true for an implementation defined set of characters
which do not return true results from any of iscntrl ,
isdigit , ispunct or isspace .
In the C locale, this extra set of characters is empty.
isprint(int c)
- True if
c is a printing character (including space).
ispunct(int c)
- True if
c is any printing character that is neither a
space nor a character which would return true from
isalnum .
isspace(int c)
- True if
c is either a white space character (one of
' ' '\f' '\n' '\r' '\t' '\v' ) or, in other than the
C locale, characters which would not return true from
isalnum
isupper(int c)
-
True if c is an upper case alphabetic character.
Also true for an implementation-defined set of characters
which do not return true results from any of iscntrl ,
isdigit , ispunct or isspace .
In the C locale, this extra set of characters is empty.
isxdigit(int c)
- True if
c is a valid hexadecimal digit.
Two additional functions map characters from one set into
another. The function tolower will, if given a upper case
character as its argument, return the lower case equivalent.
For example,
tolower('A') == 'a'
If tolower is given any character other than an upper case
letter, it will return that character.
The converse function toupper maps lower case alphabetic
letters onto their upper case equivalent.
For each, the conversion is only performed if there is a
corresponding character in the alternate case. In some
locales, not all upper case characters have lower case
equivalents, and vice versa.
|
Printer-friendly version
The C Book
This book is published as a matter of historical interest.
Please read the
copyright and disclaimer information.
GBdirect Ltd provides up-to-date training and consultancy in
C,
Embedded C,
C++
and a wide range of
other subjects based on
open standards if you happen to be interested.
|