题目 1124: C语言训练-大、小写问题

问题描述:

输入一串字符,将其中的大写变成小写,若不为大写则原样输出

样例输入:

A123b

样例输出:

a123b

问题分析:

潜在的缓冲区溢出风险:

代码声明了一个大小为 100 的字符数组 str 来存储输入的字符串,但没有检查输入字符串的长度是否超过数组的大小,这可能导致缓冲区溢出。为了避免这种情况,可以在调用 fgets 函数时限制输入的字符数,例如 fgets(str, sizeof(str), stdin); 可以改为 fgets(str, 100, stdin);。

循环条件:

在 for 循环中,循环条件是 str[i] != '\0',这是检查字符串是否结束的常见方法,但这样的写法可能会导致数组越界。建议改为i < sizeof(str)来确保不会访问超出数组界限的内存。

字符串结束符:

fgets 函数会将换行符 \n 也读取并存储在字符串中,因此在输出时会将其一同打印出来。如果不希望打印换行符,可以在输出之前将其替换为空字符。

代码分析:

这段代码的主要功能是将输入的字符串中的大写字母转换为小写字母,并输出结果。

isupper 函数

用于检查字符是否为大写字母,若是则返回非零值,否则返回零;

tolower 函数

用于将大写字母转换为小写字母,如果参数不是大写字母,则返回原始字符。

fgets函数

fgets 函数用于从标准输入流(stdin)中读取一行字符,并存储到指定的字符串数组中。它的参数包括要存储输入内容的字符串数组、最大读取字符数以及要读取的流(通常是 stdin)。这个函数会将读取到的字符放入指定的数组中,包括换行符 \n,并在字符串末尾添加一个空字符 \0 来表示字符串的结束。

代码实现:

#include <stdio.h>
#include <ctype.h>

int main() {
    char str[100]; 
    fgets(str, sizeof(str), stdin); 
    for (int i = 0; str[i] != '\0'; i++) {
        if (isupper(str[i])) { // 如果是大写字母
            printf("%c", tolower(str[i])); // 转换为小写字母并输出
        } else {
            printf("%c", str[i]); // 否则直接输出原字符
        }
    }
    
    return 0;
}

相关推荐

  1. 题目 1124: C语言训练-大、小写问题

    2024-03-15 12:00:07       45 阅读
  2. C语言题目:排序问题2

    2024-03-15 12:00:07       25 阅读
  3. C语言题目:排序问题1

    2024-03-15 12:00:07       24 阅读
  4. 题目 1155: C语言训练-阶乘和数*

    2024-03-15 12:00:07       53 阅读
  5. c语言大小写转换

    2024-03-15 12:00:07       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 12:00:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 12:00:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 12:00:07       82 阅读
  4. Python语言-面向对象

    2024-03-15 12:00:07       91 阅读

热门阅读

  1. Python网络爬虫实战:从入门到进阶

    2024-03-15 12:00:07       50 阅读
  2. QT c++ 海康红外热像仪

    2024-03-15 12:00:07       33 阅读
  3. Oracle中的commit与rollback

    2024-03-15 12:00:07       39 阅读
  4. 深度学习专家学习计划

    2024-03-15 12:00:07       40 阅读
  5. 机器学习模型—集成学习

    2024-03-15 12:00:07       36 阅读
  6. 分布式微服务 - 4.配置中心 - 2.Nacos

    2024-03-15 12:00:07       36 阅读