注册 登录
编程论坛 C++教室

这是一个比较字符串大小的函数,不知道为什么返回值输不出来

闪光点覅给 发布于 2015-10-19 17:04, 509 次点击
int compare(char s1[], char s2[]){
        for(int i=0;s1[i]!='/0';i++)
        {
            if(s1[i]>'A'&&s1[i]<'Z')
                s1[i]=s1[i]-'A'+'a';
        }
        for(i=0;s2[i]!='/0';i++)
        {
            if(s2[i]>'A'&&s2[i]<'Z')
                s2[i]=s2[i]-'A'+'a';
        }
        for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++){
            if(s1[i]>s2[i])
                return 1;
            else if(s1[i]<s2[i])
                return -1;
            else
                continue;
        }
        if(s1[i]=='\0'&&s2[i]=='\0')
            return 0;
        else if(s1[i]!='\0'&&s2[i]=='\0')
            return 1;
        else
            return -1;
}
4 回复
#2
林月儿2015-10-19 18:56
for(int i=0;s1[i]!='/0';i++)
        {
            if(s1[i]>'A'&&s1[i]<'Z')
                s1[i]=s1[i]-'A'+'a';
        }
        for(i=0;s2[i]!='/0';i++)
        {
            if(s2[i]>'A'&&s2[i]<'Z')
                s2[i]=s2[i]-'A'+'a';
#3
醒山2015-10-19 20:08
你是什么意思啊输不出来?
#4
农民工2015-10-20 09:11
'\0' != '/0 '
#5
rjsp2015-10-20 09:28
这是一个比较字符串大小的函数
--- 应该是:这是一个不区分字母大小写的比较字符串大小的函数

错误的原因2楼林月儿已经说了,我想说的是你代码为什么要搞得这么复杂
难道不应该是简单的
int strcmp( const char* s1, const char* s2 )
{
    for( ; *s1 && tolower(*s1)==tolower(*s2); ++s1,++s2 );
    return *s1-*s2;
}
以上代码我随手这么一写,没检查,更没测试,只是一个示意而已。
1