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语言字母转换大小写内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ubuntu中打开终端的三种解决方法

    ubuntu中打开终端的三种解决方法

    本篇文章是对ubuntu中打开终端的三种方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++使用easyx画实时走动的钟表

    C++使用easyx画实时走动的钟表

    这篇文章主要为大家详细介绍了C++使用easyx画实时走动的钟表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C语言小项目计时器的实现思路(倒计时+报警提示)

    C语言小项目计时器的实现思路(倒计时+报警提示)

    这篇文章主要介绍了C语言小项目计时器(倒计时+报警提示)的实现思路,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • Qt中简单的按钮槽函数传递参数方法

    Qt中简单的按钮槽函数传递参数方法

    这篇文章主要介绍了Qt中简单的按钮槽函数传递参数方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • c++非变易算法-stl算法

    c++非变易算法-stl算法

    本文主要介绍了C++ STL算法库中的非变易算法,是一些原则上不会变更操作数据的算法,包括:逐个查找算法、元素搜索算法、元素统计算法、序列匹配算法、子序列搜索算法、这些函数均包含于<algorithm>头文件,本文给出的所有代码在VS2010中编译运行通过
    2014-03-03
  • C语言交换奇偶位与offsetof宏的实现方法

    C语言交换奇偶位与offsetof宏的实现方法

    offsetof()是C自带的一个宏,它的作用就是计算结构体成员相对于首地址处的偏移量,下面这篇文章主要给大家介绍了关于C语言交换奇偶位与offsetof宏的实现方法,需要的朋友可以参考下
    2023-02-02
  • C 语言基础教程(我的C之旅开始了)[七]

    C 语言基础教程(我的C之旅开始了)[七]

    C 语言基础教程(我的C之旅开始了)[七]...
    2007-02-02
  • 使用C++实现插件模式时的避坑要点(推荐)

    使用C++实现插件模式时的避坑要点(推荐)

    这篇文章主要介绍了使用C++实现插件模式时的避坑要点,本文主要分析实践中常见的、因为对原理不清楚而搞出来的产品里的坑,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 深入理解数组指针与指针数组的区别

    深入理解数组指针与指针数组的区别

    本篇文章是对数组指针与指针数组的区别进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言实现贪吃蛇小游戏

    C语言实现贪吃蛇小游戏

    这篇文章主要为大家详细介绍了C语言实现贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03

最新评论