每个 to 函数及其关联的宏(如果有),将单个字符转换为另一个字符。
__toascii
.- .
.- .
备注
to 函数和宏转换如下所示。
| 例程 | 宏 | 说明 |
|---|---|---|
__toascii |
__toascii |
将 c 转换为 ASCII 字符 |
tolower |
tolower |
如适用,将 c 转换为小写 |
_tolower |
_tolower |
将 c 转换为小写 |
towlower |
无 | 将 c 转换为相应的宽字符小写字母 |
toupper |
toupper |
如适用,将 c 转换为大写 |
_toupper |
_toupper |
将 c 转换为大写 |
towupper |
无 | 将 c 转换为相应的宽字符大写字母 |
若要使用同时定义为宏的 to 例程的函数版本,请使用 #undef 指令移除宏定义或不包括 CTYPE.H。 如果使用 /Za 编译器选项,编译器将使用 toupper 或 tolower 的函数版本。 toupper 和 tolower 函数的声明位于 STDLIB.H 中。
__toascii 例程集将除低顺序 7 位以外的所有 c 设置为 0,使转换后的值表示 ASCII 字符集中的字符。 如果 c 已表示 ASCII 字符,则 c 保持不变。
tolower 和 toupper 例程:
- 依赖于当前区域设置的
LC_CTYPE类别(tolower调用isupper,toupper调用islower)。 - 如果
c表示当前区域设置中大小写正确的可转换字母并且该区域设置存在相反的大小写,则转换c。 否则,c保持不变。
_tolower 和 _toupper 例程:
- 是
tolower和 toupper 区域设置独立的、速度更快的版本。 - 仅当 isascii(
c) 和 isupper(c) 或 islower(c) 分别不为零时可用。 - 如果
c不是用于转换的正确大小写的 ASCII 字母,则结果不确定。
当且仅当下列两个条件均不为零时,towlower 和 towupper 函数才返回转换后的 c 副本。 否则,c 保持不变。
c是大小写正确的宽字符(即iswupper或 iswlower 分别为非零值)。- 目标大小写有对应的宽字符(即
iswlower或 iswupper 分别为非零值)。
示例
// 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.