| .\" 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) |