C strlwr() 语法
在 C 语言中,strlwr() 函数用于将一个字符串中的所有大写字母转换为小写字母,此时字符串会变为纯小写。
特别注意,strlwr() 并不是标准的 C 语言库函数,而是一些编译器(如 Microsoft Visual C++)提供的扩展。
语法:
strlwr(str)说明:
strlwr() 函数接收单个参数。
str(char*):是一个字符串。
strlwr() 是一个破坏性函数,它会修改原字符串。此外,strlwr() 函数是将字符串转换为纯小写,而 strupr() 函数是将字符串转换为纯大写。
提示: strlwr 是 “string lower(字符串小写)” 的缩写。
C strlwr() 摘要
| 使用频率 | 中 |
|---|---|
| 修改字符串 | 是 |
| 官方文档 | 无 |
C strlwr() 示例
接下来,我们通过几个简单的例子来讲解一下 C strlwr() 函数是如何使用的。
示例 1:strlwr() 基本用法
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "ALL roads LEAD tO Rome";
strlwr(str);
puts(str);
return 0;
}运行结果如下。
all roads lead to rome分析:
如果字符串本身就存在大写字母时,则 strlwr() 方法将保留小写字母,然后将所有大写字母转换成小写字母。
示例 2:字符串存在非字母
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "Excuse me???";
strlwr(str);
puts(str);
return 0;
}运行结果如下。
excuse me???分析:
对于非字母字符,strlwr() 不会对其进行处理,而是直接保留。
strlwr() 函数会修改原字符串。如果不希望修改原字符串,我们可以先使用 strcpy() 函数将原字符串复制一份,然后再使用 strlwr() 函数将其转换为小写,请看下面例子。
示例 3:使用 strcpy() + strlwr()
#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 转换为纯小写
strlwr(result);
puts(str);
puts(result);
return 0;
}运行结果如下。
ALL roads LEAD tO Rome
all roads lead to rome分析:
从结果可以看出,此时原字符串就没有被 strlwr() 函数修改了。
深入了解 strlwr()
由于 strlwr() 不是标准 C 函数,它在不同编译器上的可用性和具体行为可能有所差异。如果可移植的 C 代码,我们强烈建议使用标准的 tolower() 函数结合循环来实现字符串大小写的转换。
在 C 语言中,<ctype.h> 标准库提供了以下 2 个用于大小写转换的函数。
示例 4:tolower() 结合循环
#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] = tolower((unsigned char)str[i]);
i++;
}
printf("转换为小写: %s\n", str);
return 0;
}运行结果如下。
原始字符串 : Hello Lvye
转换为小写 : hello lvye分析:
首先我们定义了一个字符串 "Hello Lvye",然后打印出原始字符串。接着,再使用一个 while 循环 遍历字符串的每一个字符,直到遇到字符串结束符 '\0' 为止。
在 while 循环的内部,我们调用 toupper() 函数将当前字符转换为大写,并将转换后的大写字符重新赋值回原字符串的相应位置,从而实现了字符串的原地修改。
str[i] = tolower((unsigned char)str[i]);上面这句代码表示在调用 tolower() 函数之前,将 str[i] 的值强制转换为 unsigned char 类型,这样做的目的是为了确保传递给 tolower() 函数的值是一个无符号字符。
