C strlwr() 函数

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 个用于大小写转换的函数。

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

示例 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() 函数的值是一个无符号字符。

上一篇: strupr()

下一篇: strrev()

给站长反馈

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

邮箱:lvyenet@vip.qq.com

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