C语言实现大小写转换的三种方法

来源:互联网 发布:靠谱韩代 淘宝店 良心 编辑:程序博客网 时间:2024/05/01 18:24

今天心血来潮,总结了下大小写转换的方法,大致有三种。



1.使用C语言提供的函数:toupper(),tolower()

使用这两个函数需要引入头文件:#include<ctype.h>

示例代码:

#include <stdio.h>#include <conio.h>#include <ctype.h>void main( ){char a = 'a';char b = toupper( a );printf( "%c\n", b);b = tolower( b );printf( "%c\n", b);}






2.自己编写转换函数:


因为大小写之间的ASCII码值的差值是固定的,因此可以使用‘a’-‘A’来获取差值。


实例代码:

#include <stdio.h>#include <conio.h>char upChar( char ch ){   return ( char )( ch - ( 'a' - 'A' ) );};char downChar( char ch ){return ( char )( ch + ( 'a' - 'A' ) );};void main( ){char a = 'a';char b = upChar( a );printf( "%c\n", b);b = downChar( b );printf( "%c\n", b);}



3.异或0x20来实现转换:

0x20是16进制,表示为2进制是00100000,这样可能还是不明显,转换为10进制,其实就是32


对了,还是利用32.


异或:相同为0,不同为1.  也就是说,任何数字与0异或都是它本身。 


所以将其他位都设为0,把第6位(从左向右)设置为1,也就是0x20


如果第6位是1,则异或结果为0.

如果第6位是0,则异或结果为1.


实现了加减32的操作。


示例代码:

#include <stdio.h>#include <conio.h>char trans( char ch ){ch = ch ^ 0x20;return ch;};void main( ){char a = 'a';char b = trans( a );printf( "%c\n", b);b = trans( b );printf( "%c\n", b);}




0 0
原创粉丝点击