C strupr() 函数

C strupr() 语法

在 C 语言中,strupr() 函数用于将一个字符串中的所有小写字母转换为大写字母,此时字符串会变为纯大写。

特别注意,strupr() 并不是标准的 C 语言库函数,而是一些编译器(如 Microsoft Visual C++)提供的扩展。

语法:

strupr(str)

说明:

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

  • str(char*):是一个字符串。

strupr() 是一个破坏性函数,它会修改原字符串。此外,strupr() 函数是将字符串转换为纯大写,而 strlwr() 函数是将字符串转换为纯小写。

提示: strupr 是 “string upper(字符串大写)” 的缩写。

C strupr() 摘要

使用频率
修改字符串
官方文档

C strupr() 示例

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

示例 1:strupr() 基本用法

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "ALL roads LEAD tO Rome";

    strupr(str);
    puts(str);

    return 0;
}

运行结果如下。

ALL ROADS LEAD TO ROME

分析:

如果字符串本身就存在大写字母,那么 strupr() 函数将保留大写字母,然后将所有小写字母转换成大写字母。

示例 2:字符串存在非字母

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "Excuse me???";

    strupr(str);
    puts(str);

    return 0;
}

运行结果如下。

EXCUSE ME???

分析:

对于非字母字符,strupr() 不会对其进行处理,而是直接保留。

此外,strupr() 函数会修改原字符串。如果不希望修改原字符串,我们可以先使用 strcpy() 函数将原字符串复制一份,然后再使用 strupr() 将其转换为大写,请看下面例子。

示例 3:使用 strcpy() + strupr()

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "ALL roads LEAD tO Rome";
    char result[50];

    // 将 str 复制到 result
    strcpy(result, str);
    // 将 result 转换为纯大写
    strupr(result);

    puts(str);
    puts(result);

    return 0;
}

运行结果如下。

ALL roads LEAD tO Rome
ALL ROADS LEAD TO ROME

分析:

从结果可以看出,此时原字符串就没有被 strupr() 函数修改了。

深入了解 strupr()

由于 strupr() 不是标准 C 函数,其在不同编译器上的可用性和具体行为可能有所差异。如果想要可移植的 C 代码,我们强烈建议使用标准的 toupper() 函数结合循环来实现字符串大小写的转换。

在 C 语言中,<ctype.h> 标准库提供了以下 2 个用于大小写转换的函数。

  • toupper():用于将 “单个字母” 转换为大写。
  • tolower():用于将 “单个字母” 转换为小写。

示例 4:toupper() 结合循环

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

int main(void)
{
    char str[] = "Hello Lvye";
    int i = 0;

    printf("原始字符串: %s\n", str);

    while (str[i] != '\0') {
        str[i] = toupper((unsigned char)str[i]);
        i++;
    }

    printf("转换为大写: %s\n", str);
    return 0;
}

运行结果如下。

原始字符串 : Hello Lvye
转换为大写 : HELLO LVYE

分析:

首先我们定义了一个字符串 "Hello Lvye",然后打印出原始字符串。接着,使用一个 while 循环 遍历字符串的每一个字符,直到遇到字符串结束符 '\0' 为止。

在 while 循环的内部,我们调用 toupper() 函数将当前字符转换为大写,并将转换后的大写字符重新赋值回原字符串的相应位置,从而实现了字符串的原地修改。

str[i] = toupper((unsigned char)str[i]);

上面这句代码表示在调用 toupper() 函数之前,将 str[i] 的值强制转换为 unsigned char 类型,这样做的目的是为了确保传递给 toupper() 函数的值是一个无符号字符。

上一篇: memchr()

下一篇: strlwr()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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