目录
方法一:库函数直接转换
1、toupper的测试代码
2、tolower的测试代码
方法二:通过修改ASCII码值转换
1、自己实现大写转小写
2、自己实现小写转大写
结语
前言:
在使用c语言写代码时,通常会遇到很多将大小写字母相互转换的场景,比如刷题的时候,常常会让我们将一个字符串中的小写字母转换成大写字母,或者将大写转换成小写,并且规定让我们手撕整个转换过程,不得使用库函数进行转换,这时候往往没有头绪。
其实转换字母最常用的方法有两种:1、直接调用库里的转换函数。2、对字母的ASCII码值进行加减。具体如下文。
方法一:库函数直接转换
在c语言的库函数中,提供了两个函数可以直接实现大小写字母的转换,即:tolower和toupper。
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会很方便,最后希望本文可以给你带来更多的收获!!!