目录
方法一:库函数直接转换
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];//把字符串中的字符给到cc = toupper(c);//将c转换成大写字母并重新赋予cputchar(c);//输出ci++;}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];//把字符串中的字符给到cc = tolower(c);//将c转换成小写字母并重新赋予cputchar(c);//输出ci++;}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];//把字符串中的字符给到cif (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];//把字符串中的字符给到cif (c >= 'a' && c <= 'z')//只对小写字母做处理{c -= 32;//小写字母-32=对应的大写字母}putchar(c);i++;}return 0;}
运行结果:
结语
以上就是关于字母大小写如何转换的讲解,在做题中一般都是让我们自己手撕一个转换过程,其转换思路就在于字母的ASCII码值之间加减关系,当然库里提供的两个函数也需要了解,因为有些场景下可以使用库函数直接转换,那么直接调用tolower和toupper会很方便,最后希望本文可以给你带来更多的收获!!!