c语言一串大写字母转小写,C语言的基础函数大小写转换
在程序中经常会需要对字母的大小写进行转换,虽然有现成的upper/lower函数,但是有时因为各种原因,或想减小程序的体积,需要自己编写函数来实现。
这里来讨论一下各种转换的方法。
根据ASCII码我们可以知道大写字母和小写字母相差32(20H)=100000B(二进制).
根据这个原理我们可以方便的进行大小写的转换。如是是大写字母+32就变成小写。
例子: 大写字母’A’ 它的ASCII码是65. ‘a’的ASCII码是97,看下面的等式。
‘A’+32=65+32=97 = ‘a’
另外:
‘a’的二进制是01100001B
‘A’的二进制是01000001B
也就是说小写和大写的区别就是100000B ,也就是bit 5的区别。
所以还可以通过与运算修改bit 5的值也可以达到转换的目的。
把第5位置为1可以按位”或”操作,置为0 可以按位”与”操作
00100000B = 32 = 20H
11011111B = 223 = DFH
‘a’ & 223 = ‘A’ ‘A’ | 32 = ‘a’
其实也就是字母的第5位(二进制位),如果它是1就是小写的,如果是0就是大写。
另外在使用经典的代码比较时
小写转大写 >=’a’ 并且 <=’z’
大写转小写 >=’A’ 并且 <=’Z’
可以把这两个比较的顺序对换一下。
改成<=’Z’ 并且 >=’A’ ,看起来没有什么区别,但是实际运行中效率会更高。
原理: 因为比较时,只要第一个条件不符合,那就不会去比较第二个条件了,利用这一点可以加快比较速度。
小写字母都是大于’Z’的,当然也大于’A’。
比如转换aBCD为小写,a已经是小写了,如果按原来的方法比较>=’A’ && <=’Z’ 需要比较两次。
用后面的方法只需要比较一次。
下面是实现的代码.有两种方式。(转大写的)
void upper(char string)
{
while(string)
{
#if 0
//第一种方式比较经典的方法
if (string >='a' && string <='z')
string &= 0xDF;
#else
/*
好像网上还没有见过这种用法,算是一个意外发现吧.
减去'a',如果它的值在0-25之前则它肯定是小写字母。因为是无符号数.
如果这个字符小于a那会得到负数(>128)
*/
if ((unsigned char)(string - 'a') < 26)
string -= 32;
//大写转小写只要把'a'改为'A',转换的方式为`+= 32`或` |= 32`
#endif
++string;
}
return;
}
两种不同的方式的汇编代码比较,用经典的方法执行效率可能会高一点儿。
用新的方法生成的文件小一点(少几个字节,在程序空间比较紧张的情况下可以用).
c语言一串大写字母转小写,C语言的基础函数大小写转换相关推荐
- 删除字符串的大写字母c语言,将字符串大写字母变小写 C语言 字符串中大小写字母转换...
java怎样将大写字母转换成小写字母 具体代码如下,字符串中大.小写互转 1)输入 第一行只有一个整数m(m都说欲擒故纵最能虏获芳心,可小编拿什么对抗她在皱眉时,小编忍不住嘘寒问暖的情绪. jquer ...
- html案例字符串大小写转换,将字符串大写字母变小写 c语言编程:字符串中大小写字母转换...
java怎样将大写字母转换成小写字母 具体代码如下,字符串中大.小写互转 1)输入 第一行只有一个整数m(m jquery 字符串大写字母转小写 js字符转换成小写的方法:toLowerCase()j ...
- C语言:一个大写字母转换为小写字母
小写字母的的ASCII码总比对应的大写字母的ASCII码大32,所以给小写字母+32即可. #include <stdio.h>int main(void){char ch1,ch2;pr ...
- c语言一般用大写字母定义什么,c语言程序格式是什么
c语言格式是:1.C程序都是从main函数开始执行的:2.C程序整体是由函数构成的:3.函数体的内容在[{}]中:4.每一个执行语句都以[:]结尾:5.英文字母大小写通用. c语言格式是: 1. 主函 ...
- C语言_字符串_将键盘输入的大写字母转换为小写
# include <stdio.h>char fun(char *c) {if (*c<='Z' && *c>='A') //满足条件:*c是大写字母*c-= ...
- c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)
c语言自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数) 程序流程图: 代码: #include<stdio.h> char strupr(char ch[ ...
- 输入大写字母,输出大小写字母及其对应的ASCII码;输入语句,将大写字母变成小写字母;将句子中每个单词的第一个字母转换为大写字母;输入一串字符,分别算出英文字母、空格、数字、其他字符的个数(C)
养成好习惯,点个赞 再走:有问题,欢迎私信.评论,我看到都会回复的 以下题目是对于ASCII码的一些练手题 在c语言中 使用%c输出的是字符本身 使用%d输出的是字符对应的ASCII 在ASCII中, ...
- c语言:(指针)输入一行文字,找出其中的大写字母,小写字母,数字,空格以及其他字符
c语言:(指针)输入一行文字,找出其中的大写字母,小写字母,数字,空格以及其他字符 #include<stdio.h> #include<stdlib.h> #include& ...
- java 输入一串字符统计大写字母个数小写字母个数及特殊符号并输出
```java//输入一串字符统计大写字母个数小写字母个数及特殊符号并输出public static void test5(String str){char[] s = str.toCharArray ...
最新文章
- hdu 2669 Romantic
- 练习题3(求四位会员卡号之和)
- 软件工程---团队作业四
- 160 - 3 Afkayas.2
- 网络爬虫--15.【糗事百科实战】多线程实现
- 字符串的模式匹配--BF算法KMP算法
- 码农回忆刚毕业工作的那年
- SSL:Self-Supervised Learning(自监督学习)是什么?
- IT餐馆—第四回 离职
- 一加9R国行版即将到来:搭载骁龙870 售价预计3K内
- 'int' object has no attribute 'backward'报错 使用Pytorch编写 Hinge loss函数
- ArcGIS学习总结(四)——缓冲区分析应用
- m语言常用函数和命令
- leetcode/求平方根
- Pycharm2018.2破解版本闪退问题解决办法
- Skip List(跳表)
- 新手如何学习学嵌入式开发?
- 【Apache Spark 】第 10 章使用 MLlib 进行机器学习
- 【STM32】基于IWDG实现复位(手动喂狗)功能
- 配置AD域环境、OU、GPO
热门文章
- 2018华工计算机考研分数,2018年华南理工大学考研复试分数线
- java foreach标签,jstl c:foreach标签
- yaml数组解析_yaml格式详解
- helm istio k8s docker
- SonarQube 代码扫描任务集成
- WebStorm ES6 语法支持设置
- 【leetcode❤python】Move Zeroes
- 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】
- [ruby on rails] 跟我学之(6)显示指定数据
- Ubuntu11.10配置Eclipse下Android开发环境