标题:字符串相关问题
只看楼主
number25
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2018-3-13
结帖率:0
已结贴  问题点数:10 回复次数:4 
字符串相关问题
Description

一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如“Hello”和“hello”,在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
要求用一个自定义函数实现忽略大小写的比较过程,用函数的返回值表示比较的结果:若返回值为0表示两个字符串相等;若返回值为1表示第一个字符串比第二个字符串大;若返回值为-1表示第一个字符串比第二个字符串小。
函数定义为:int MyStrCmp(char *pStr1,char *pStr2)

Input

输入数据共有两行,每行一个字符串,字符串中可能包含空格和其它非字母字符,并且每个字符串长度都不超过80个字符。

Output

如果第一个字符串比第二个字符串小,输出一个字符“<”;
如果第一个字符串比第二个字符串大,输出一个字符“>”;
如果两个字符串相等,输出一个字符“=”。

Sample Input


Hello
hello

Sample Output


=

搜索更多相关主题的帖子: 字符串 比较 字符 字母 Hello 
2018-04-12 16:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
都转换为大写(或小写)后再strcmp
2018-04-12 16:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
vc 有 _stricmp
gcc 有 strcasecmp
标准库没有,因为标准库现在对locale头疼,不知道怎么统一标准地处理各国字符

回正题,这个函数除了返回值和strcmp不同外,其它应该是相同的。即 参数相同,返回类型也相同
查了一下标准,标准写的是:
int strcmp( const char* s1, const char* s2 );
The strcmp function returns an integer greater than, equal to, or less than zero, accordingly as the string pointed to by s1 is greater than, equal to, or less than the string pointed to by s2.
什么?!!! 标准函数的两个参数都有const修饰,那这个出题者不写const是什么深意?
什么?!!! 标准函数的返回值是 小于0、等于0、大于0,那么这个出题者定为 等于-1,等于0,等于+1 有什么深意?
2018-04-12 17:01
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:3 
*pStr1 - *pStr2==0 || abs(*pStr1 - *pStr2)==32
2018-04-12 18:07
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:3 
其实strcmp直接返回两个ASCII码相减的结果实现上来反而方便~

至于不加const的确不符合标准库的规范,所以出题者明显就单纯是看看怎么判断两个字母不区分大小写是否相等,这些看看就可以了~


其实不加const修饰可以开个小后门来见笑一下~

用ctype.h里面的tolower函数或者toupper函数可以实现大小写转换~

直接一个循环把两个字符串统一大小写然后再用strcmp得到返回值就可以了~

PS:深入了解一点据说忘了那种编译器对tolower和toupper实现实际上是一个宏,为了效率忽略了对副作用的处理,这些看看就可以了~

[此贴子已经被作者于2018-4-12 18:15编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-04-12 18:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486014-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.268744 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved