编程论坛's Archiver

yt414204458 发表于 2008-7-21 16:59

求助字符串比较大小问题

在strcmp函数这一节看到这句话:
"36+54">"! $&#"
这句话是怎么判断的啊?

chengli 发表于 2008-7-21 19:18

我给你一个这个函数的原型,用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]]

yt414204458 发表于 2008-7-21 20:01

回复 2# chengli 的帖子

谢谢啊
while(*s && *p && *s==*p)中*s && *p是什么意思?
我想知道"! $&#"的值是什么?

蓝色神话 发表于 2008-7-21 20:06

看strcmp("36+54","! $&#")的返回值是不是大于0。

chengli 发表于 2008-7-21 22:01

这表示两个字符串都没结束

两个字符串只要有一个遇到‘\0’就跳出循环

yt414204458 发表于 2008-7-21 22:57

回复 5# chengli 的帖子

那"! $&#"的值是多少啊?怎么算的?

YuriGagarin 发表于 2008-7-22 10:31

应该是几个字符的ASCII值吧!!

!→33
$→36
&→38
#→35
  (33+36+38+35)>(36+54)

  看来楼主前面的部分没有好好看哦??!!!

  谭浩强《C程序设计》(第三版)P364

yt414204458 发表于 2008-7-22 20:16

回复 7# YuriGagarin 的帖子

拜托,要按你这样算可是就错了啊,"36+54">"! $&#"可是成立的啊

yt414204458 发表于 2008-7-23 16:01

没人会吗?高手都哪里去了?

sxn0508 发表于 2008-7-23 16:08

字符串的比较就是字符串里面的字符一个一个进行比较
一直到某一字符串结束
或者出现一个不相同的字符为止。
"36+54">"! $&#"
第一个字符就不一样
'3'>'!'(0x33>0x21)
所以得出了前一个字符串大于后一个

xiaomengxia2008 发表于 2008-7-23 16:39

回复 10# sxn0508 的帖子

同意楼上的说法:字符串是从头到尾一个一个进行比较的

strcmp()函数有两个参数,即要比较的两个字符串。strcmp()函数对两个字符串进行大小
写敏感的(case-sensitiVe)和字典式的(lexicographic)比较,并返回下列值之一:
----------------------------------------------------
    返  回  值         意  义
----------------------------------------------------
    <0               第一个字符串小于第二个字符串
     0               两个字符串相等    ·
    >0               第一个字符串大于第二个字符串
----------------------------------------------------

coming 发表于 2008-7-23 16:46

恩 只是比较第一个字符 第一个要是大于就是大于了

yt414204458 发表于 2008-7-23 22:02

回复 10# sxn0508 的帖子

哦,意思是只要比较'3'和'!'的大小就行了吧?

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.