.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" Modified Sat Jul 24 19:10:00 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Sun Aug 21 17:51:50 1994 by Rik Faith (faith@cs.unc.edu)
.\" Modified Sat Sep  2 21:52:01 1995 by Jim Van Zandt <jrv@vanzandt.mv.com>
.\" Modified Mon May 27 22:55:26 1996 by Martin Schulze (joey@linux.de)
.\"
.TH ISALPHA 3 2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph, islower,
isprint, ispunct, isspace, isupper, isxdigit,
isalnum_l, isalpha_l, isascii_l, isblank_l, iscntrl_l,
isdigit_l, isgraph_l, islower_l,
isprint_l, ispunct_l, isspace_l, isupper_l, isxdigit_l
\- character classification functions
.SH SYNOPSIS
.nf
.B #include <ctype.h>
.PP
.BI "int isalnum(int " c );
.BI "int isalpha(int " c );
.BI "int iscntrl(int " c );
.BI "int isdigit(int " c );
.BI "int isgraph(int " c );
.BI "int islower(int " c );
.BI "int isprint(int " c );
.BI "int ispunct(int " c );
.BI "int isspace(int " c );
.BI "int isupper(int " c );
.BI "int isxdigit(int " c );
.PP
.BI "int isascii(int " c );
.BI "int isblank(int " c );
.PP
.BI "int isalnum_l(int " c ", locale_t " locale );
.BI "int isalpha_l(int " c ", locale_t " locale );
.BI "int isblank_l(int " c ", locale_t " locale );
.BI "int iscntrl_l(int " c ", locale_t " locale );
.BI "int isdigit_l(int " c ", locale_t " locale );
.BI "int isgraph_l(int " c ", locale_t " locale );
.BI "int islower_l(int " c ", locale_t " locale );
.BI "int isprint_l(int " c ", locale_t " locale );
.BI "int ispunct_l(int " c ", locale_t " locale );
.BI "int isspace_l(int " c ", locale_t " locale );
.BI "int isupper_l(int " c ", locale_t " locale );
.BI "int isxdigit_l(int " c ", locale_t " locale );
.PP
.BI "int isascii_l(int " c ", locale_t " locale );
.fi
.PP
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.ad l
.PP
.BR isascii ():
.nf
    _XOPEN_SOURCE
        || /* Glibc since 2.19: */ _DEFAULT_SOURCE
        || /* Glibc <= 2.19: */ _SVID_SOURCE
.fi
.PP
.BR isblank ():
.nf
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
.fi
.nh
.PP
.BR isalnum_l (),
.BR isalpha_l (),
.BR isblank_l (),
.BR iscntrl_l (),
.BR isdigit_l (),
.BR isgraph_l (),
.BR islower_l (),
.BR isprint_l (),
.BR ispunct_l (),
.BR isspace_l (),
.BR isupper_l (),
.BR isxdigit_l ():
.hy
.nf
    Since glibc 2.10:
        _XOPEN_SOURCE >= 700
    Before glibc 2.10:
        _GNU_SOURCE
.fi
.PP
.BR isascii_l ():
.nf
    Since glibc 2.10:
        _XOPEN_SOURCE >= 700 && (_SVID_SOURCE || _BSD_SOURCE)
    Before glibc 2.10:
        _GNU_SOURCE
.fi
.ad
.SH DESCRIPTION
These functions check whether
.IR c ,
which must have the value of an
.I unsigned char
or
.BR EOF ,
falls into a certain character class according to the specified locale.
The functions without the
"_l" suffix perform the check based on the current locale.
.PP
The functions with the "_l" suffix perform the check
based on the locale specified by the locale object
.IR locale .
The behavior of these functions is undefined if
.I locale
is the special locale object
.B LC_GLOBAL_LOCALE
(see
.BR duplocale (3))
or is not a valid locale object handle.
.PP
The list below explains the operation of the functions without
the "_l" suffix;
the functions with the "_l" suffix differ only in using the locale object
.I locale
instead of the current locale.
.TP
.BR isalnum ()
checks for an alphanumeric character; it is equivalent to
.BI "(isalpha(" c ") || isdigit(" c "))" \fR.
.TP
.BR isalpha ()
checks for an alphabetic character; in the standard \fB"C"\fP
locale, it is equivalent to
.BI "(isupper(" c ") || islower(" c "))" \fR.
In some locales, there may be additional characters for which
.BR isalpha ()
is true\(emletters which are neither uppercase nor lowercase.
.TP
.BR isascii ()
checks whether \fIc\fP is a 7-bit
.I unsigned char
value that fits into
the ASCII character set.
.TP
.BR isblank ()
checks for a blank character; that is, a space or a tab.
.TP
.BR iscntrl ()
checks for a control character.
.TP
.BR isdigit ()
checks for a digit (0 through 9).
.TP
.BR isgraph ()
checks for any printable character except space.
.TP
.BR islower ()
checks for a lowercase character.
.TP
.BR isprint ()
checks for any printable character including space.
.TP
.BR ispunct ()
checks for any printable character which is not a space or an
alphanumeric character.
.TP
.BR isspace ()
checks for white-space characters.
In the
.B """C"""
and
.B """POSIX"""
locales, these are: space, form-feed
.RB ( \(aq\ef\(aq ),
newline
.RB ( \(aq\en\(aq ),
carriage return
.RB ( \(aq\er\(aq ),
horizontal tab
.RB ( \(aq\et\(aq ),
and vertical tab
.RB ( \(aq\ev\(aq ).
.TP
.BR isupper ()
checks for an uppercase letter.
.TP
.BR isxdigit ()
checks for hexadecimal digits, that is, one of
.br
.BR "0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F" .
.SH RETURN VALUE
The values returned are nonzero if the character
.I c
falls into the tested class, and zero if not.
.SH VERSIONS
.BR isalnum_l (),
.BR isalpha_l (),
.BR isblank_l (),
.BR iscntrl_l (),
.BR isdigit_l (),
.BR isgraph_l (),
.BR islower_l (),
.BR isprint_l (),
.BR ispunct_l (),
.BR isspace_l (),
.BR isupper_l (),
.BR isxdigit_l (),
and
.BR isascii_l ()
are available since glibc 2.3.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR isalnum (),
.BR isalpha (),
.BR isascii (),
.BR isblank (),
.BR iscntrl (),
.BR isdigit (),
.BR isgraph (),
.BR islower (),
.BR isprint (),
.BR ispunct (),
.BR isspace (),
.BR isupper (),
.BR isxdigit ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.\" FIXME: need a thread-safety statement about the *_l functions
.SH CONFORMING TO
C89 specifies
.BR isalnum (),
.BR isalpha (),
.BR iscntrl (),
.BR isdigit (),
.BR isgraph (),
.BR islower (),
.BR isprint (),
.BR ispunct (),
.BR isspace (),
.BR isupper (),
and
.BR isxdigit (),
but not
.BR isascii ()
and
.BR isblank ().
POSIX.1-2001
also specifies those functions, and also
.BR isascii ()
(as an XSI extension)
and
.BR isblank ().
C99 specifies all of the preceding functions, except
.BR isascii ().
.PP
POSIX.1-2008 marks
.BR isascii ()
as obsolete,
noting that it cannot be used portably in a localized application.
.PP
POSIX.1-2008 specifies
.BR isalnum_l (),
.BR isalpha_l (),
.BR isblank_l (),
.BR iscntrl_l (),
.BR isdigit_l (),
.BR isgraph_l (),
.BR islower_l (),
.BR isprint_l (),
.BR ispunct_l (),
.BR isspace_l (),
.BR isupper_l (),
and
.BR isxdigit_l ().
.PP
.BR isascii_l ()
is a GNU extension.
.SH NOTES
The standards require that the argument
.I c
for these functions is either
.B EOF
or a value that is representable in the type
.IR "unsigned char" .
If the argument
.I c
is of type
.IR char ,
it must be cast to
.IR "unsigned char" ,
as in the following example:
.PP
.in +4n
.EX
char c;
\&...
res = toupper((unsigned char) c);
.EE
.in
.PP
This is necessary because
.I char
may be the equivalent of
.IR "signed char" ,
in which case a byte where the top bit is set would be sign extended when
converting to
.IR int ,
yielding a value that is outside the range of
.IR "unsigned char" .
.PP
The details of what characters belong to which class depend on the
locale.
For example,
.BR isupper ()
will not recognize an A-umlaut (\(:A) as an uppercase letter in the default
.B "C"
locale.
.SH SEE ALSO
.BR iswalnum (3),
.BR iswalpha (3),
.BR iswblank (3),
.BR iswcntrl (3),
.BR iswdigit (3),
.BR iswgraph (3),
.BR iswlower (3),
.BR iswprint (3),
.BR iswpunct (3),
.BR iswspace (3),
.BR iswupper (3),
.BR iswxdigit (3),
.BR newlocale (3),
.BR setlocale (3),
.BR toascii (3),
.BR tolower (3),
.BR toupper (3),
.BR uselocale (3),
.BR ascii (7),
.BR locale (7)
