编写一个C程序,输入一个字符串,将其中的小写字母转换为大写字母后输出

目录

代码

大小写字母的转换的代码

fgets函数的用法

 fgets和scanf的区别

 举例1

举例2


代码

#include <stdio.h>
#include <string.h>

int main() {
    char str[100];
    printf("请输入一个字符串:");
    fgets(str, sizeof(str), stdin);//这个很重要,这篇博客主要为了讲它,请看下面解析

    for (int i = 0; i < strlen(str); i++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            str[i] = str[i] - 32;  // 小写字母转换为大写字母
        }
    }

    printf("转换后的字符串为:%s", str);

    return 0;
}

在这个程序中,我们使用了一个for循环遍历输入的字符串,对于每个小写字母,通过ASCII码将其转换为对应的大写字母。最后输出转换后的字符串。

大小写字母的转换的代码

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	printf("Input a string:");
	scanf("%s",str);
	for(int i=0;i<strlen(str);i++)
	{
		if(str[i]>='a' && str[i]<='z')
		{
			str[i]=str[i]-32;//小写转换成大写
		}
		else if(str[i]>='A' && str[i]<='Z')
		{
			str[i]=str[i]+32;//大写转换成小写
		}
	}
	printf("%s\n",str);
	return 0;
}

fgets函数的用法

fgets是C语言中用来读取字符串的函数;

1.其原型为:

char *fgets(char *str, int size, FILE *stream);

2.

其中,str是一个字符数组,用来存储读取到的字符串;size是str的大小,表示最多读取的字符数(包括空字符'\0');stream是输入流,通常使用stdin表示从标准输入读取。

因此,fgets(str, sizeof(str), stdin)这一行代码的作用是,从标准输入中读取一个字符串,并将其存储到str字符数组中sizeof(str)的作用是获取str数组的大小,保证读取的字符数不超过数组的容量,避免造成内存溢出等错误。

需要注意的是,fgets函数会将输入流中的换行符'\n'读取到字符串中,如果不需要可以手动去除。

使用fgets函数时,需要注意以下几点

  1. fgets函数会将输入中的换行符(\n)也一同读取进来,因此字符串长度可能会比预期的要长。
  2. 为了避免字符串长度超出缓冲区大小,可以将缓冲区的大小作为第二个参数传递给sizeof函数,确保读取的字符串不会溢出
  3. 需要注意fgets函数读取的字符串末尾会有一个空字符(\0),因此在判断字符串相等或进行其他处理时,需要考虑到这个空字符。

 fgets和scanf的区别

     fgets函数是C标准库提供的一个比较安全和通用的读取字符串的函数。它可以从文件流(例如stdin)中读取一行字符串,包括换行符,并将其存储到指定的缓冲区中。相比于scanf函数,fgets函数更适合读取包含空格和特殊字符的字符串,也更容易避免缓冲区溢出的问题。另外,fgets函数还可以指定最大读取的字符数,以避免读取过多的数据。

      scanf函数是一个格式化的输入函数,可以从标准输入或其他文件流中按照指定的格式读取数据。它可以根据格式字符串中的占位符来解析输入数据,并将解析结果存储到指定的变量中。相比于fgets函数,scanf函数更适合按照特定的格式读取数据,例如整数、浮点数等但对于读取字符串来说,使用fgets函数更安全可靠。

     总结起来,fgets函数主要用于读取字符串,包括特殊字符和空格,而且能够避免缓冲区溢出的问题。而scanf函数则更适合按照特定的格式读取数据,包括整数、浮点数等。

 举例1

假设我们要编写一个C程序,输入两个整数,然后输出它们的和。我们可以使用fgets函数来读取用户输入的字符串,并将其转换为整数类型后进行计算,代码如下

#include <stdio.h>
#include <stdlib.h>

int main() {
    char str1[100], str2[100];
    int num1, num2;

    printf("请输入两个整数:\n");
    fgets(str1, sizeof(str1), stdin);
    fgets(str2, sizeof(str2), stdin);

    num1 = atoi(str1);  // 将字符串转换为整数
    num2 = atoi(str2);

    int sum = num1 + num2;
    printf("它们的和为:%d\n", sum);

    return 0;
}

举例2

以下是一个使用fgets函数读取用户输入的国家名称,并输出其对应的简称的C程序示例 

#include <stdio.h>
#include <string.h>

int main() {
    char country[100];
    printf("请输入一个国家名称:");
    fgets(country, sizeof(country), stdin);

    if (strcmp(country, "中国\n") == 0) {
        printf("它的简称是CN。\n");
    } else if (strcmp(country, "美国\n") == 0) {
        printf("它的简称是US。\n");
    } else if (strcmp(country, "日本\n") == 0) {
        printf("它的简称是JP。\n");
    } else {
        printf("无法识别该国家的名称。\n");
    }

    return 0;
}

希望这些示例能够帮助您理解如何使用fgets函数读取用户输入的字符串并进行处理。

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~莫子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值