to 函数

每个 to 函数及其关联的宏(如果有),将单个字符转换为另一个字符。

__toascii
tolower_tolowertowlower
toupper_touppertowupper

备注

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 编译器选项,编译器将使用 touppertolower 的函数版本。 touppertolower 函数的声明位于 STDLIB.H 中。

__toascii 例程集将除低顺序 7 位以外的所有 c 设置为 0,使转换后的值表示 ASCII 字符集中的字符。 如果 c 已表示 ASCII 字符,则 c 保持不变。

tolowertoupper 例程:

  • 依赖于当前区域设置的 LC_CTYPE 类别(tolower 调用 isuppertoupper 调用 islower)。
  • 如果 c 表示当前区域设置中大小写正确的可转换字母并且该区域设置存在相反的大小写,则转换 c。 否则,c 保持不变。

_tolower_toupper 例程:

  • tolowertoupper 区域设置独立的、速度更快的版本。
  • 仅当 isascii(c)isupper(c)islower(c) 分别不为零时可用。
  • 如果 c 不是用于转换的正确大小写的 ASCII 字母,则结果不确定。

当且仅当下列两个条件均不为零时,towlowertowupper 函数才返回转换后的 c 副本。 否则,c 保持不变。

  • c 是大小写正确的宽字符(即 iswupperiswlower 分别为非零值)。
  • 目标大小写有对应的宽字符(即 iswloweriswupper 分别为非零值)。

示例

// 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.

另请参阅

数据转换
Locale
is, isw 例程