C tolower() 语法
tolower() 是 C 语言 <ctype.h> 标准库的一个函数,用于将给定的字符转换为小写字母。
语法:
tolower(c)说明:
tolower()函数接收单个参数。
c(int):是一个字符。虽然是 int 类型,但它的值必须能够表示为一个 unsigned char,或者等于 EOF。
tolower() 函数会返回一个 int 类型的值,表示转换后的字符。
- 如果参数 c 是一个大写字母('A' 到 'Z'),则返回它对应的小写字母。
- 如果参数 c 不是小写字母(比如已经是大写字母、数字或符号),则原样返回。
提示: tolower 指的是 “to lower(转换为小写)”。
C tolower() 摘要
| 使用频率 | 高 |
|---|---|
| 修改字符串 | 否 |
| 官方文档 | 查看 |
| 相关函数 | toupper()、isupper()、islower() |
C tolower() 示例
接下来,我们通过几个简单的例子来讲解一下 C tolower() 函数是如何使用的。
示例1:tolower() 转换大写字母
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch = 'H';
char result = tolower(ch);
printf("%c\n", result);
return 0;
}运行结果如下。
h分析:
从结果可以看出,tolower('H')最终将大写字母 'H' 转换为了小写字母 'h'。
示例2:tolower() 处理小写字母和非字母字符
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char ch1 = 'a';
char ch2 = '8';
char ch3 = '#';
char ch4 = ' '; // 空格
printf("%c\n", tolower(ch1));
printf("%c\n", tolower(ch2));
printf("%c\n", tolower(ch3));
printf("%c\n", tolower(ch4));
return 0;
}运行结果如下。
a
8
$
' '(空格)分析:
tolower() 只会对大写字母进行转换。如果输入字符是小写字母、数字、标点符号或其他非字母字符,则它会返回原字符。
示例3:tolower() 将字符串转换为小写
#include <stdio.h>
#include <ctype.h> // 包含 tolower() 函数
#include <string.h> // 包含 strlen() 函数
int main(void)
{
char str[] = "HELLO, Lvye 666!";
// 遍历字符串并将每个字符转换为小
for (int i = 0; str[i] != '\0'; i++)
{
str[i] = tolower((unsigned char)str[i]); // 将转换结果重新赋值给原位置
}
printf("%s\n", str);
return 0;
}运行结果如下。
hello, lvye 666!分析:
在这个例子中,我们使用 for 循环 来遍历字符串的每个字符,并将 tolower() 的结果赋值回原位置。这样我们就可以将整个字符串中的大写字母转换为小写,而其他字符保持不变。
示例4:tolower() 处理 EOF
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int result;
// 处理 EOF
result = tolower(EOF);
printf("%d\n", result);
return 0;
}运行结果如下。
-1分析:
tolower() 的参数可以是 EOF。一般情况下,EOF 的值被定义为 -1。
提示: EOF 不是键盘上的一个字符,也不是文件中的一个字符,而是一个特殊的整数值(宏定义)。它在 C 语言中用于表示文件达到了末尾。
深入了解 tolower()
对于 tolower() 函数来说,它会受到当前区域设置 (locale) 的影响。不过在默认的 "C" 区域设置下,它只会对 'A' ~ 'Z' 这 26 个大写字母转换为小写字母。而在其他区域设置下,它可能会根据该区域设置的字符转换规则来处理更多的字符。
需要注意的是,tolower() 不会修改原始字符,而是返回转换后的字符值。因此,我们需要将返回值赋给一个变量才能保存转换结果。例如:
char ch = 'A';
char result = tolower(ch); // 必须用一个变量来接收转换结果虽然 tolower() 输入的参数类型写的是 int,但我们必须传入一个字符(比如 'a'、'B' 等),或者输入特殊的 EOF 值(常用于文件结束判断)。如果传入一个负数(除了 EOF),则可能会导致未定义行为。
