求助字符串比较大小问题
在strcmp函数这一节看到这句话:"36+54">"! $&#"
这句话是怎么判断的啊?
我给你一个这个函数的原型,用strcompare 来代替 strcmp
int strcompare(char *s,char *p){
while(*s && *p && *s==*p) s++,p++;
return *s-*p;
}
main()
{
char s[20],p[20];
printf("qing shu lu s[],p[]\n");
scanf("%s%s",s,p);
if(strcompare(s,p) > 0)
printf("%s > %s ",s,p);
else if(strcompare(s,p)==0)
printf("%s = %s",s,p);
else printf("%s < %s",s,p);
}
[[it] 本帖最后由 chengli 于 2008-7-21 19:19 编辑 [/it]]
回复 2# chengli 的帖子
谢谢啊while(*s && *p && *s==*p)中*s && *p是什么意思?
我想知道"! $&#"的值是什么? 看strcmp("36+54","! $&#")的返回值是不是大于0。
这表示两个字符串都没结束
两个字符串只要有一个遇到‘\0’就跳出循环回复 5# chengli 的帖子
那"! $&#"的值是多少啊?怎么算的? 应该是几个字符的ASCII值吧!!!→33
$→36
&→38
#→35
(33+36+38+35)>(36+54)
看来楼主前面的部分没有好好看哦??!!!
谭浩强《C程序设计》(第三版)P364
回复 7# YuriGagarin 的帖子
拜托,要按你这样算可是就错了啊,"36+54">"! $&#"可是成立的啊 没人会吗?高手都哪里去了? 字符串的比较就是字符串里面的字符一个一个进行比较一直到某一字符串结束
或者出现一个不相同的字符为止。
"36+54">"! $&#"
第一个字符就不一样
'3'>'!'(0x33>0x21)
所以得出了前一个字符串大于后一个
回复 10# sxn0508 的帖子
同意楼上的说法:字符串是从头到尾一个一个进行比较的strcmp()函数有两个参数,即要比较的两个字符串。strcmp()函数对两个字符串进行大小
写敏感的(case-sensitiVe)和字典式的(lexicographic)比较,并返回下列值之一:
----------------------------------------------------
返 回 值 意 义
----------------------------------------------------
<0 第一个字符串小于第二个字符串
0 两个字符串相等 ·
>0 第一个字符串大于第二个字符串
---------------------------------------------------- 恩 只是比较第一个字符 第一个要是大于就是大于了
回复 10# sxn0508 的帖子
哦,意思是只要比较'3'和'!'的大小就行了吧?页:
[1]
