c语言-大小写字母的转换

       

目录

方法一:库函数直接转换

1、toupper的测试代码

2、tolower的测试代码 

方法二:通过修改ASCII码值转换 

1、自己实现大写转小写

 2、自己实现小写转大写

结语 


前言:

        在使用c语言写代码时,通常会遇到很多将大小写字母相互转换的场景,比如刷题的时候,常常会让我们将一个字符串中的小写字母转换成大写字母,或者将大写转换成小写,并且规定让我们手撕整个转换过程,不得使用库函数进行转换,这时候往往没有头绪。

        其实转换字母最常用的方法有两种:1、直接调用库里的转换函数。2、对字母的ASCII码值进行加减。具体如下文。

方法一:库函数直接转换

        在c语言的库函数中,提供了两个函数可以直接实现大小写字母的转换,即:tolowertoupper

int tolower ( int c );//接收一个参数,返回一个整形
int toupper( int c );//接收一个参数,返回一个整形

        1、tolower是将写字母转换成写字母,返回转换后的小写字母的ASCII值,若传给c的参数本身就是一个小写字母,则该函数不做任何处理直接返回c的值。

        2、toupper是将写字母转换成写字母,返回转换后的大写字母的ASCII值,若传给c的参数本身就是一个大写字母,则该函数不做任何处理直接返回c的值。

        3、并且tolower和toupper不对非字母的字符做任何处理。

1、toupper的测试代码

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	char str[] = "Test String!!";
	char c;
	while (str[i])
	{
		c = str[i];//把字符串中的字符给到c
		c = toupper(c);//将c转换成大写字母并重新赋予c
		putchar(c);//输出c

		i++;
	}
	return 0;
}

         运行结果:

2、tolower的测试代码 

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <ctype.h>
int main()
{
	int i = 0;
	char str[] = "Test String!!";
	char c;
	while (str[i])
	{
		c = str[i];//把字符串中的字符给到c
		c = tolower(c);//将c转换成小写字母并重新赋予c
		putchar(c);//输出c

		i++;
	}
	return 0;
}

        运行结果:

方法二:通过修改ASCII码值转换 

        因为字母本身属于字符,而字符在计算机中是以整形的形式存储的,即字母是以ASCII值的形式存在计算机中的,因此只要搞清楚大小写字母的ASCII码值是多少,然后对他们直接进行加减即可改变字母。(总结:因为字母的存储形式是ASCII码值,因此可以直接对字母进行加减等操作

        如下图ASCII码表所示:

        根据上图所示,所有的大写字母和小写字母他们的ASCII码值都是连续的,所以我们可以直接 用区间的形式来取到所有大写字母的范围,和所有小写字母的范围。

        比如:c >= 'a' && c <= 'z'结果为真,那么c肯定是小写字母中的一个。相反,c >= 'A' && c <= 'Z'结果为真,则c肯定是大写字母中的一个。有了以上的思路就可以自己实现大写字母和小写字母的转换了。

1、自己实现大写转小写

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main()
{
	int i = 0;
	char str[] = "Test String!!";
	char c;
	while (str[i])
	{
		c = str[i];//把字符串中的字符给到c

		if (c >= 'A' && c <= 'Z')//只对大写字母做处理
		{
			c += 32;//大写字母+32=对应的小写字母
		}
		putchar(c);

		i++;
	}
	return 0;
}

        运行结果:

 2、自己实现小写转大写

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main()
{
	int i = 0;
	char str[] = "Test String!!";
	char c;
	while (str[i])
	{
		c = str[i];//把字符串中的字符给到c

		if (c >= 'a' && c <= 'z')//只对小写字母做处理
		{
			c -= 32;//小写字母-32=对应的大写字母
		}
		putchar(c);

		i++;
	}
	return 0;
}

        运行结果:

结语 

        以上就是关于字母大小写如何转换的讲解,在做题中一般都是让我们自己手撕一个转换过程,其转换思路就在于字母的ASCII码值之间加减关系,当然库里提供的两个函数也需要了解,因为有些场景下可以使用库函数直接转换,那么直接调用tolower和toupper会很方便,最后希望本文可以给你带来更多的收获!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

安权_code

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

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

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

打赏作者

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

抵扣说明:

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

余额充值