C toupper() 函数

C toupper() 语法

toupper() 是 C 语言 <ctype.h> 标准库的一个函数,用于将小写字母转换为大写字母。

语法:

toupper(c)

说明:

toupper() 函数接收单个参数。

  • c(int):是一个字符。虽然是 int 类型,但一般我们会把一个字符(如 'a'、'b' 等)传递给它。

注意: c 的值必须是一个 unsigned char 能表示的字符,或者是特殊值 EOF。

toupper() 函数会返回一个 int 类型的值,不过我们一般可以把结果当作字符来使用。

  • 如果参数 c 是一个小写字母(即 'a' 到 'z' 之间的字符),则返回它对应的大写字母。例如:
toupper('a');     // 返回 'A'
toupper('z');     // 返回 'Z'
  • 如果参数 c 不是小写字母(比如已经是大写字母、数字或符号),则原样返回。

如果想要把一个字符串都转换为大写字母,我们需要对字符串的每个字符都调用一次 toupper()。

提示: toupper 指的是 “to upper(转换为大写)”。

C toupper() 摘要

使用频率
修改原字符
官方文档 查看
相关函数 tolower()isupper()islower()

C toupper() 示例

接下来,我们通过几个简单的例子来讲解一下 C toupper() 函数是如何使用的。

示例1:toupper() 转换小写字母

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

int main(void)
{
    char ch = 'a';

    char result = toupper(ch);
    printf("%c\n", result);

    return 0;
}

运行结果如下。

A

分析:

从结果可以看出,toupper('a') 最终将小写字母 'a' 转换为了大写字母 'A'。

示例2:toupper() 处理大写字母和非字母字符

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

int main(void)
{
    char ch1 = 'H';
    char ch2 = '6';
    char ch3 = '$';
    char ch4 = ' ';    // 空格

    printf("%c\n", toupper(ch1));
    printf("%c\n", toupper(ch2));
    printf("%c\n", toupper(ch3));
    printf("%c\n", toupper(ch4));

    return 0;
}

运行结果如下。

H
6
$
' '(空格)

分析:

toupper() 只会对小写字母进行转换。如果输入字符已经是大写字母、数字、标点符号或其他非字母字符,则它会返回原字符。

示例3:toupper() 将字符串转换为大写

#include <stdio.h>
#include <ctype.h>     // 包含 toupper() 函数
#include <string.h>    // 包含 strlen() 函数

int main(void)
{
    char str[] = "Hello, Lvye 666!";

    // 遍历字符串并将每个字符转换为大写
    for (int i = 0; str[i] != '\0'; i++) 
    {
        str[i] = toupper((unsigned char)str[i]);    // 将转换结果重新赋值给原位置
    }
    printf("%s\n", str);

    return 0;
}

运行结果如下。

HELLO, LVYE 666!

分析:

在这个例子中,我们使用 for 循环 来遍历字符串的每个字符,并将 toupper() 的结果赋值回原位置。这样我们就可以将整个字符串中的小写字母转换为大写,而其他字符保持不变。

示例4:toupper() 处理 EOF

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

int main(void)
{
    int result;

    // 处理 EOF
    result = toupper(EOF);
    printf("%d\n", result);

    return 0;
}

运行结果如下。

-1

分析:

toupper() 的参数可以是 EOF。一般情况下,EOF 的值被定义为 -1。

提示: EOF 不是键盘上的一个字符,也不是文件中的一个字符,而是一个特殊的整数值(宏定义)。它在 C 语言中用于表示文件达到了末尾。

深入了解 toupper()

对于 toupper() 函数来说,它会受到当前区域设置 (locale) 的影响。不过在默认的 "C" 区域设置下,它只会对 'a' ~ 'z' 这 26 个小写字母转换为大写字母。而在其他区域设置下,它可能会根据该区域设置的字符转换规则来处理更多的字符。

需要注意的是,toupper() 不会修改原始字符,而是返回转换后的字符值。因此,我们需要将返回值赋给一个变量才能保存转换结果。例如:

char ch = 'a'; 
char result = toupper(ch);    // 必须用一个变量来接收转换结果

虽然 toupper() 输入的参数类型写的是 int,但我们必须传入一个字符(比如 'a'、'B' 等),或者输入特殊的 EOF 值(常用于文件结束判断)。如果传入一个负数(除了 EOF),则可能会导致未定义行为。

上一篇: C <ctype.h> 标准库

下一篇: tolower()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号