C语言字母转换大小写的3种方法图文详解

 更新时间:2023年10月08日 09:23:42   作者:修修修也  
我们在C语言入门的时候都会遇到要求写大小写转换的题目,所以下面这篇文章主要给大家介绍了关于C语言字母转换大小写的3种方法,文中给了详细的代码示例,需要的朋友可以参考下

方法一:库函数法

1.小写转换大写:toupper()函数

我们先来看toupper()函数简介

 注意,toupper()函数的原型定义在头文件<ctype.h>中,因此使用前需要包含该头文件

下面我们来看toupper()函数的原型

int toupper ( int c );

综上可知,当你向toupper()函数传输一个小写字母(实际是它的ASCII值)时,它会返回给你一个该字母对应的大写字母(实际是大写字母的ASCII值)。

我们试着在编译器中测试一下该函数:

 可以看到,toupper()函数可以直接接收整形数据即字符的ASCII码值作为参数,然后返回相应大写字母的ASCII码值

但要注意的是,作为toupper()函数的参数的整形只能识别一个字节的整形,即十进制0-255范围内,如果给定的整形大小超过一个字节,则会发生整形截断,即会自动截断后八位之外的数据

还有需要注意的是,在发生截断的情况下,toupper函数返回的是截断后的原数据,而不会返回转换成大写后的数据,如:

2.大写转换小写:tolower()函数

我们来看一下tolower()函数的简介

 可以发现,tolower()函数的函数和前面的toupper()函数非常相似,区别只是tolower()函数大写转换成小写,而toupper()函数则负责将小写转换成大写

使用方法完全和toupper()一样,如:

同样也会发生整形截断:

可以看到,在前面的演示中tolower()函数也发生了整形截断

当我们会使用toupper()函数和tolower()函数后,下面我们来看一下如何不借助库函数来实现字母的大小写转换。即构造自己的字母大小写转换函数

方法二:加减32法

1.小写转换大写:字符数据减32

ASCII码表:

由ASCII码表我们可以得知,要根据小写字母得到大写字母,只需将小写字母的值减去32即可,因此我们自己写一个函数负责将传入的符合小写字母区间的字母转换成大写字母,其余不符合的返回原值,代码实现逻辑教简单,如下:

#include<stdio.h>
int my_toupper(int ch)
{
	if (ch >= 97 && ch <= 122)
		return ch - 32;
	else
		return ch;
}
int main()
{
	char ch = 'a';
	ch=my_toupper(ch);
	printf("%c", ch);
	return 0;
}

代码运行效果:

可见,该函数具有成功将小写字母转换成大写的功能。

2.大写转换小写:字符数据加32

同理可知,要根据大写字母得到小写字母,只需将大写字母的值加上32即可,因此我们自己写一个函数负责将传入的符合大写字母区间的字母转换成小写字母,其余不符合的返回原值,该部分代码实现逻辑与前文类似,如下:

#include<stdio.h>
int my_tolower(int ch)
{
	if (ch >= 65 && ch <= 90)
		return ch + 32;
	else
		return ch;
}
int main()
{
	char ch = 'A';
	ch = my_tolower(ch);
	printf("%c", ch);
	return 0;
}

 代码运行效果:

该函数同样能接收符合条件的字符ASCII码值完成转换:

当不符合条件时,返回原值:

方法三:位运算法

大小写转换:字符数据按位异或32

在位运算的层面上,我们可以借助按位异或^ , 相同为0,不同为1)来帮我们实现字母大小写的转换,如:

 反之用97^32=65.

因此该方法可以实现传入大写字符转换成小写字符传入小写字符转换成大写字符的效果,代码如下:

int my_move(int ch)
{
	if (((ch >= 97) && (ch <= 122)) || ((ch >= 65) && (ch <= 90)))
		return ch ^ 32;
	else
		return ch;
}
int main()
{
	char ch1 = 'a';
	ch1=my_move(ch1);
	char ch2 = 'A';
	ch2=my_move(ch2);
	char ch3 = 97;
	ch3=my_move(ch3);
	char ch4= 65;
	ch4=my_move(ch4);
	char ch5 = 322;
	ch5=my_move(ch5);
	printf("%c\n", ch1);
	printf("%c\n", ch2);
	printf("%c\n", ch3);
	printf("%c\n", ch4);
	printf("%c\n", ch5);
	return 0;
}

代码运行效果如下:

可以看到,该函数同样可以达到之前大小写转换的效果。

总结

到此这篇关于C语言字母转换大小写的3种方法的文章就介绍到这了,更多相关C语言字母转换大小写内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C/C++指针介绍与使用详解

    C/C++指针介绍与使用详解

    不知从何时起对你一眼万年,从此,每一天被赋予了特别的意义。时隔多年,依然挥之不去是你------指针!!!本篇中几乎数据类型只用了int,但是float、double等也是可以的
    2022-08-08
  • 一文掌握C++ const与constexpr及区别

    一文掌握C++ const与constexpr及区别

    C++ 11标准中,const 用于为修饰的变量添加“只读”属性而 constexpr关键字则用于指明其后是一个常量,编译器在编译程序时可以顺带将其结果计算出来,而无需等到程序运行阶段,这样的优化极大地提高了程序的执行效率,本文重点介绍C++ const与constexpr区别介绍,一起看看吧
    2024-02-02
  • 数据结构 双向链表的创建和读取详解及实例代码

    数据结构 双向链表的创建和读取详解及实例代码

    这篇文章主要介绍了数据结构 双向链表的创建和读取详解及实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • 浅析C语言中typeof关键字用法

    浅析C语言中typeof关键字用法

    typeof关键字是C语言中的一个新扩展。在linux内核源代码中广泛使用。接下来通过本文给大家分享C语言中typeof关键字用法,需要的朋友参考下
    2017-02-02
  • 不要被C++(自动生成规则)所蒙骗

    不要被C++(自动生成规则)所蒙骗

    正如标题所说,我们不要被C++语法中所描述的那些条条框框所“蒙骗”了。的确,相信这些生成规则不会对我们的编程带来多大的影响(不会产生错误),但是只有了解它们的背后操作,我们才知道编译器究竟为我们做了什么,感兴趣的朋友可以了解下,希望本文对你有所帮助
    2013-01-01
  • C++中const char*、char const*、char * const三者的区别

    C++中const char*、char const*、char * const三者的区别

    这篇文章主要介绍了C++中const char*、char const*、char * const三者的区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C++模拟实现string的示例代码

    C++模拟实现string的示例代码

    这篇文章主要为大家详细介绍了C++模拟实现string的相关资料,文中的示例代码讲解详细,对我们学习C++有一定的帮助,需要的可以参考一下
    2022-11-11
  • C++之文件输入/输出流类解读

    C++之文件输入/输出流类解读

    这篇文章主要介绍了C++之文件输入/输出流类,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 浅谈c++性能测试工具google benchmark

    浅谈c++性能测试工具google benchmark

    本文将会介绍如何使用模板以及参数生成器来批量生成测试用例,简化繁琐的性能测试代码
    2021-06-06
  • C++中Socket网络编程实例详解

    C++中Socket网络编程实例详解

    这篇文章主要介绍了C++中Socket网络编程实例详解的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论