Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Each of the to
functions and its associated macro, if any, converts a single character to another character.
__toascii
tolower
, _tolower
, towlower
toupper
, _toupper
, towupper
Remarks
The to
functions and macro conversions are as follows.
Routine | Macro | Description |
---|---|---|
__toascii |
__toascii |
Converts c to ASCII character |
tolower |
tolower |
Converts c to lowercase if appropriate |
_tolower |
_tolower |
Converts c to lowercase |
towlower |
None | Converts c to corresponding wide-character lowercase letter |
toupper |
toupper |
Converts c to uppercase if appropriate |
_toupper |
_toupper |
Converts c to uppercase |
towupper |
None | Converts c to corresponding wide-character uppercase letter |
To use the function versions of the to
routines that are also defined as macros, either remove the macro definitions with #undef
directives or don't include CTYPE.H
. If you use the /Za compiler option, the compiler uses the function version of toupper
or tolower
. Declarations of the toupper
and tolower
functions are in STDLIB.H
.
The __toascii
routine sets all but the low-order 7 bits of c
to 0, so that the converted value represents a character in the ASCII character set. If c
already represents an ASCII character, c
is unchanged.
The tolower
and toupper
routines:
- Are dependent on the
LC_CTYPE
category of the current locale (tolower
callsisupper
andtoupper
callsislower
). - Convert
c
ifc
represents a convertible letter of the appropriate case in the current locale and the opposite case exists for that locale. Otherwise,c
is unchanged.
The _tolower
and _toupper
routines:
- Are locale-independent, much faster versions of
tolower
and toupper. - Can be used only when isascii(
c
) and either isupper(c
) or islower(c
), respectively, are nonzero. - Have undefined results if
c
isn't an ASCII letter of the appropriate case for converting.
The towlower
and towupper
functions return a converted copy of c
if and only if both of the following conditions are nonzero. Otherwise, c
is unchanged.
c
is a wide character of the appropriate case (that is, for whichiswupper
or iswlower, respectively, is nonzero).- There's a corresponding wide character of the target case (that is, for which
iswlower
or iswupper, respectively, is nonzero).
Example
// crt_toupper.c
/* This program uses toupper and tolower to
* analyze all characters between 0x0 and 0x7F. It also
* applies _toupper and _tolower to any code in this
* range for which these functions make sense.
*/
#include <ctype.h>
#include <string.h>
#include <stdio.h>
char msg[] = "Some of THESE letters are Uppercase.";
char *p;
int main( void )
{
printf( "%s\n", msg );
/* Reverse case of message. */
for( p = msg; p < msg + strlen( msg ); p++ )
{
if( islower( *p ) )
putchar( _toupper( *p ) );
else if( isupper( *p ) )
putchar( _tolower( *p ) );
else
putchar( *p );
}
}
Some of THESE letters are Uppercase.
sOME OF these LETTERS ARE uPPERCASE.