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 个用于大小写转换的函数。
示例 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() 函数的值是一个无符号字符。
