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


islower, islower_l - test for a lowercase letter


#include <ctype.h>

int islower(int

[CX] [Option Start] int islower_l(int c, locale_t locale); [Option End]


For islower(): [CX] [Option Start]  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. [Option End]

The islower() [CX] [Option Start]  and islower_l() [Option End]  functions shall test whether c is a character of class lower in the current locale of the process, [CX] [Option Start]  or in the locale represented by locale, [Option End]  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.


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


The islower_l() function may fail if:

[CX] [Option Start] locale is not a valid locale object handle. [Option End]

The following sections are informative.


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 locale of the user, 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;
char c;
setlocale(LC_ALL, "");
len = 0;
while (len < elementlen) {
    c = (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; char c; ... locale_t loc = newlocale (LC_ALL_MASK, "", (locale_t) 0); ... len = 0; while (len < elementlen) { c = (char) (rand() % 256); ... if (islower_l(c, loc)) keystr[len++] = c; } ...


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.






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

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


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.

An example is added.

Issue 7

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

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-2008 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]