The Open Group Base Specifications Issue 7
IEEE Std 1003.1-2008, 2016 Edition
Copyright © 2001-2016 The IEEE and The Open Group

#### NAME

> islower, islower_l - test for a lowercase letter

#### SYNOPSIS

> ``#include <ctype.h>
> int islower(int` c`);
> ``

> ``[CX] int islower_l(int` c`, locale_t` locale`);``
> `
> `

#### DESCRIPTION

> For islower(): [CX] The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2008 defers to the ISO C standard.

> The islower() [CX] and islower_l() functions shall test whether c is a character of class lower in the current locale, [CX] or in the locale represented by locale, respectively; see XBD Locale.

> The c argument is an int, the value of which the application shall ensure is a character representable as an unsigned char or equal to the value of the macro EOF. If the argument has any other value, the behavior is undefined.

> [CX] The behavior is undefined if the locale argument to islower_l() is the special locale object LC_GLOBAL_LOCALE or is not a valid locale object handle.

#### RETURN VALUE

> The islower() [CX] and islower_l() functions shall return non-zero if c is a lowercase letter; otherwise, they shall return 0.

#### ERRORS

> No errors are defined.

The following sections are informative.

#### EXAMPLES

> ##### Testing for a Lowercase Letter

> Two examples follow, the first using islower(), the second using multiple concurrent locales and islower_l().

> The examples test whether the value is a lowercase letter, based on the current locale, then use it as part of a key value.

>     /* Example 1 -- using islower() */
>     #include <ctype.h>
>     #include <stdlib.h>
>     #include <locale.h>
>     ...
>     char *keystr;
>     int elementlen, len;
>     unsigned char c;
>     ...
>     setlocale(LC_ALL, "");
>     ...
>     len = 0;
>     while (len < elementlen) {
>         c = (unsigned char) (rand() % 256);
>     ...
>         if (islower(c))
>             keystr[len++] = c;
>         }
>     ...

>     /* Example 2 -- using islower_l() */
>     #include <ctype.h>
>     #include <stdlib.h>
>     #include <locale.h>
>     ...
>     char *keystr;
>     int elementlen, len;
>     unsigned char c;
>     ...
>     locale_t loc = newlocale (LC_ALL_MASK, "", (locale_t) 0);
>     ...
>     len = 0;
>     while (len < elementlen) {
>         c = (unsigned char) (rand() % 256);
>     ...
>         if (islower_l(c, loc))
>             keystr[len++] = c;
>         }
>     ...

#### APPLICATION USAGE

> To ensure applications portability, especially across natural languages, only these functions and the functions in the reference pages listed in the SEE ALSO section should be used for character classification.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> isalnum, isalpha, isblank, iscntrl, isdigit, isgraph, isprint, ispunct, isspace, isupper, isxdigit, setlocale, uselocale

> XBD Locale, <ctype.h>, <locale.h>

#### CHANGE HISTORY

> First released in Issue 1. Derived from Issue 1 of the SVID.

#### Issue 6

> The normative text is updated to avoid use of the term "must" for application requirements and an example is added.

#### Issue 7

> The islower_l() function is added from The Open Group Technical Standard, 2006, Extended API Set Part 4.

> POSIX.1-2008, Technical Corrigendum 1, XSH/TC1-2008/0292 [302], XSH/TC1-2008/0293 [283], XSH/TC1-2008/0294 [283], XSH/TC1-2008/0295 [302], and XSH/TC1-2008/0296 [304] are applied.

End of informative text.

return to top of page

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
Copyright © 2001-2016 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]