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),则可能会导致未定义行为。
