to
函式
每個函 to
式及其相關聯的巨集,如果有的話,都會將單一字元轉換成另一個字元。
__toascii
tolower
、 、 _tolower
towlower
toupper
、 、 _toupper
towupper
備註
函 to
式和巨集轉換如下所示。
常式 | Macro | 描述 |
---|---|---|
__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
。 和 tolower
函式的toupper
宣告位於 STDLIB.H
中。
__toascii
常式會將所有位元設定為 0,但不含 c
的低序位 7 個位元,因此轉換過的值代表 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.