# toupper

< c‎ | string‎ | byte

定义于头文件 `<ctype.h>` |  |
int toupper( int ch ); |  |

按照当前安装的 C 本地环境所定义的字符转换规则，转换给定字符为大写。

默认 `"C"` 本地环境中，分别以大写字母 `ABCDEFGHIJKLMNOPQRSTUVWXYZ` 替换下列小写字母 `abcdefghijklmnopqrstuvwxyz` 。

### 参数

ch | - | 要转化的字符。若 `ch` 的值不能表示为 unsigned char 且不等于 EOF ，则行为未定义。

### 返回值

被转换的字符，或若无大写版本列于当前 C 本地环境，则为不修改的 `ch` 。

### 示例

    #include <stdio.h>
    #include <ctype.h>
    #include <locale.h>
    #include <limits.h>

    int main(void)
    {
        /* 在默认本地环境： */
        unsigned char u;
        for (unsigned char l=0; l<UCHAR_MAX; l++) {
            u = toupper(l);
            if (l!=u) printf("%c%c ", l,u);
        }
        printf("\n\n");

        unsigned char c = '\xb8'; // ISO-8859-15 中的字母 ž
                                  // 但在 ISO-8859-1 中为 ¸ （下加符）
        unsigned char c2 = c;   // 为打印
        setlocale(LC_ALL, "en_US.iso88591");
        printf("in iso8859-1, toupper('0x%x') gives 0x%x\n", c2, toupper(c));
        setlocale(LC_ALL, "en_US.iso885915");
        printf("in iso8859-15, toupper('0x%x') gives 0x%x\n", c2, toupper(c));
    }

输出：

    aA bB cC dD eE fF gG hH iI jJ kK lL mM nN oO pP qQ rR sS tT uU vV wW xX yY zZ

    in iso8859-1, toupper('0xb8') gives 0xb8
    in iso8859-15, toupper('0xb8') gives 0xb4

### 引用

- C11 标准（ISO/IEC 9899:2011）：

  - 7.4.2.2 The toupper function (p: 204)

- C99 标准（ISO/IEC 9899:1999）：

  - 7.4.2.2 The toupper function (p: 185)

- C89/C90 标准（ISO/IEC 9899:1990）：

  - 4.3.2.2 The toupper function

### 参阅

tolower | 将字符转换成小写 (函数)
towupper (C95) | 将宽字符转换为大写 (函数)