c语言不区分大小写 大小写转换失败

1051人阅读
临时投放区^_^(17)
1.调用C语言标准库:ctype.h
调用toupper(), tolower函数。
测试样例:
#include &stdio.h&
#include &ctype.h&
int main()
int i = 0;
char str[] = &i love you&;
while(str[i])
putchar (toupper(str[i]));
2.如果考虑不调用库函数,应该怎么实现大小写转换功能:
毕竟大神写程序很少使用库函数。
(1). 定义宏:
#define toupper(c) ((c) + 'A' - 'a')
#define tolower(c) ((c) + 'a' - 'A')
缺陷:如果输入的字母大小写不对,那么返回的就是无用的垃圾信息。
(2).重写宏:
#define toupper(c) ((c) &= 'a' && (c) &= 'z' ? (c) + 'A' - 'a' : (c) )
#define tolower(c) ((c) &= 'A' && (c) &= 'Z' ?(c) + 'a' - 'A' : (c) )
缺陷:遇到touppper(*p++),可能造成不良后果。
(3).定义函数:
int toupper(int c)
if(c &= 'a' && c&= 'z')
return c + 'A' - 'a';
tolower与之类似。
缺陷:引入了函数调用的开销。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:28969次
积分:1016
积分:1016
排名:千里之外
原创:74篇
转载:15篇
(7)(14)(6)(5)(7)(16)(34)C语言(92)
镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include&stdio.h&
#include&ctype.h&
int main()
char ch1='a';
char ch2='B';
printf(&%c &,ch1-32);//小比大大32
printf(&%c &,tolower(ch2));
printf(&%c &,toupper(ch1));
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
感恩帮助过我的人。博客的精髓在技术部分,更在镇场一诗。
我是一个新手,代码还有许多不完善的地方,请您看代码的时候多多思考。
C语言是一个优秀的语言,值得学习。如果您有一些不会的知识,咱们可以相互讨论。
如果您认为代码可以有改进的地方,有错误的地方,请留下评论,我会处理的。
注:如果我的博文无意中侵犯了您的权益,请告知。看到您的告知后,我将及时作出处理。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:868975次
积分:15074
积分:15074
排名:第756名
原创:906篇
转载:39篇
译文:21篇
评论:126条
文章:422篇
阅读:335497
文章:209篇
阅读:125786
文章:66篇
阅读:42771
(6)(1)(1)(19)(306)(137)(339)(120)(26)(10)C语言中大小写字母的转化
#include &stdio.h&
int main()
int ch = 0;
while ((ch = getchar()) != EOF)
/*ctrl+z,是把输入的字符逐字读取到ch,
直到文件末尾( EOF的全称是end of file,
是文件结束的标志,每一个输入都伴随有 ),
其中!=表示不读到文件末尾不停止*/
if ((ch &= 'a') && (ch &= 'z'))
ch = ch - 32;
else if ((ch &= 'A') && (ch &= 'Z'))
ch = ch + 32;
else if ((ch &= '0') && (ch &= '9'))
//终止本次循环
putchar(ch);//输出字符

我要回帖

更多关于 c语言不区分大小写 的文章

 

随机推荐