19. Character Handling <ctype.h>
#
The header <ctype.h>
declares several functions useful for classifying and
mapping characters. In all cases the argument is an int
, the value of which
shall be representable as an unsigned char
or shall equal the value of the
macro EOF
. If the argument has any other value, the behavior is undefined.
The behavior of these functions is affected by the current locale. Those functions that have locale-specific aspects only when not in the “C” locale are noted below.
The term printing character refers to a member of a locale-specific set of characters, each of which occupies one printing position on a display device; the term control character refers to a member of a locale-specific set of characters that are not printing characters. [1] All letters and digits are printing characters.
Forward references: EOF (14.19.1), localization (14.11).
19.1. Character classification functions#
The functions in this subclause return nonzero (true) if and only if the value of the argument c conforms to that in the description of the function.
19.1.1. The isalnum
function#
Synopsis
#include <ctype.h>
int isalnum(int c);
Description
The isalnum
function tests for any character for which isalpha
or
isdigit
is true.
Synopsis
#include <ctype.h>
int isalnum(int c);
Description
Checks for an alphanumeric character; it is equivalent to (isalpha(c) ||
isdigit(c))
.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c='c', c1=9, c2='$', c3='9';
printf("%d %d %d %d\n", isalnum(c), isalnum(c1), isalnum(c2), isalnum(c3));
return 0;
}
and the output is:
8 0 0 8
The output does not need any explation as it is blind-obvious.
19.1.2. The isalpha
function#
Synopsis
#include <ctype.h>
int isalpha(int c);
Description
The isalpha
function tests for any character for which isupper
or
islower
is true, or any character that is one of a locale-specific set of
alphabetic characters for which none of iscntrl, isdigit, ispunct
or
isspace
is true. In the “C” locale, isalpha
returns true only for the
characters for which isupper
or islower
is true.
Synopsis
#include <ctype.h>
int isalpha(int c);
Description
Checks for an alphabetic character; in the standard “C” locale, it is
equivalent to (isupper(c) || islower(c))
. In some locales, there may be
additional characters for which isalpha()
is true—letters which are
neither upper case nor lower case.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c='c', c1=9, c2='$', c3='9';
printf("%d %d %d %d\n", isalpha(c), isalpha(c1), isalpha(c2), isalpha(c3));
return 0;
}
and the output is:
1024 0 0 0
19.1.3. The isblank
function#
Synopsis
#include <ctype.h>
int isblank(int c);
Description
The isblank
function tests for any character that is a standard blank
character or is one of a locale-specific set of characters for which
isspace
is true and that is used to separate words within a line of text.
The standard blank characters are the following: space (’ ‘), and horizontal
tab (’\t’). In the “C” locale, isblank
returns true only for the standard
blank characters.
Synopsis
#include <ctype.h>
int isblank(int c);
Description
Checks for a blank character; that is, a space or a tab.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c=' ', c1='\n', c2=' ', c3='9';
printf("%d %d %d %d\n", isblank(c), isblank(c1), isblank(c2), isblank(c3));
return 0;
}
and the output is:
1 0 1 0
19.1.4. The iscntrl
function#
Synopsis
#include <ctype.h>
int iscntrl(int c);
Description
The iscntrl
function tests for any control character.
Synopsis
#include <ctype.h>
int iscntrl(int c);
Description
Checks for a control character.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c=0; //NUL
char c1=1; //SOH or ctrl-A
char c2=3; //STX or ctrl-B
char c3=4; //ETX or ctrl-C
printf("%d %d %d %d\n", iscntrl(c), iscntrl(c1), iscntrl(c2), iscntrl(c3));
return 0;
}
and the output is:
2 2 2 2
19.1.5. The isdigit
function#
Synopsis
#include <ctype.h>
int isdigit(int c);
Description
The isdigit
function tests for any decimal-digit character.
Synopsis
#include <ctype.h>
int isdigit(int c);
Description
Checks for a digit (0 through 9).
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c1='a', c2='1';
printf("%d %d\n", isdigit(c1), isdigit(c2));
return 0;
}
and the output is:
0 2048
19.1.6. The isgraph
function#
Synopsis
#include <ctype.h>
int isgraph(int c);
Description
The isgraph
function tests for any printing character except space (’ ‘).
Synopsis
#include <ctype.h>
int isgraph(int c);
Description
Checks for any printable character except space.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c1='a', c2=' ';
printf("%d %d\n", isgraph(c1), isgraph(c2));
return 0;
}
and the output is:
32768 0
19.1.7. The islower
function#
Synopsis
#include <ctype.h>
int islower(int c);
Description
The islower
function tests for any character that is a lowercase letter or
is one of a locale-specific set of characters for which none of iscntrl,
isdigit, ispunct
or isspace
is true. In the “C” locale, islower
returns true only for the lowercase letters
Synopsis
#include <ctype.h>
int islower(int c);
Description
Checks for a lower-case character.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c1='a', c2=' ';
printf("%d %d\n", islower(c1), islower(c2));
return 0;
}
and the output is:
512 0
19.1.8. The isprint
function#
Synopsis
#include <ctype.h>
int isprint(int c);
Description
The isprint
function tests for any printing character including space (’ ‘).
Synopsis
#include <ctype.h>
int isprint(int c);
Description
Checks for any printable character including space.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c1='a', c2=0;
printf("%d %d\n", isprint(c1), isprint(c2));
return 0;
}
and the output is:
16384 0
19.1.9. The ispunct
function#
Synopsis
#include <ctype.h>
int ispunct(int c);
Description
The ispunct
function tests for any printing character that is one of a
locale-specific set of punctuation characters for which neither isspace
nor
isalnum
is true. In the “C” locale, ispunct returns true for every printing
character for which neither isspace
nor isalnum
is true.
Synopsis
#include <ctype.h>
int ispunct(int c);
Description
Checks for any printable character which is not a space or an alphanumeric character.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c1='a', c2=';';
printf("%d %d\n", ispunct(c1), ispunct(c2));
return 0;
}
and the output is:
0 4
19.1.10. The isspace
function#
Synopsis
#include <ctype.h>
int isspace(int c);
Description
The isspace
function tests for any character that is a standard white-space
character or is one of a locale-specific set of characters for which
isalnum
is false. The standard white-space characters are the following:
space (’ ‘), form feed (’f’), new-line (’n’), carriage return (’r’),
horizontal tab (’t’), and vertical tab (’v’). In the “C” locale, isspace
returns true only for the standard white-space characters.
Synopsis
#include <ctype.h>
int isspace(int c);
Description
Checks for white-space characters. In the “C” and “POSIX” locales, these are: space, form-feed (’f’), newline (’n’), carriage return (’r’), horizontal tab (’t’), and vertical tab (’v’).
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c1='\n', c2=';';
printf("%d %d\n", isspace(c1), isspace(c2));
return 0;
}
and the output is:
8192 0
19.1.11. The isupper
function#
Synopsis
#include <ctype.h>
int isupper(int c);
Description
The isupper
function tests for any character that is an uppercase letter or
is one of a locale-specific set of characters for which none of iscntrl,
isdigit, ispunct
or isspace
is true. In the “C” locale, isupper
returns true only for the uppercase letters.
Synopsis
#include <ctype.h>
int isupper(int c);
Description
Checks for an uppercase letter.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c1='A', c2=';';
printf("%d %d\n", isupper(c1), isupper(c2));
return 0;
}
and the output is:
256 0
19.1.12. The isxdigit
function#
Synopsis
#include <ctype.h>
int isxdigit(int c);
Description
The isxdigit
function tests for any hexadecimal-digit character.
Synopsis
#include <ctype.h>
int isxdigit(int c);
Description
Checks for a hexadecimal digits, that is, one of:
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F.
Return Value
The values returned are nonzero if the character c
falls into the
tested class, and a zero value if not.
Example
#include <stdio.h>
#include <ctype.h>
int main()
{
char c1='a', c2=';';
printf("%d %d\n", isxdigit(c1), isxdigit(c2));
return 0;
}
and the output is:
4096 0