C语言比较字符串大小 没有显示错误  但是输出值是错的  应该怎么改了

原问题:C语言比较字符串大小 没有显示错误  但是输出值是错的  应该怎么改了
分类:编程开发 > 最后更新时间:【2017-08-01 18:00:37】
问题补充:

#include <stdio.h>

#include <string.h>

int main (void)

{

char s1[200];

char s2[200];

gets(s1);

gets(s2);

int i;

int min=strlen(s1)>strlen(s2)?strlen(s2):strlen(s1);

for(i=0;i<min;i++)

{

if(s1[i]==s2[i])

{

}

else

{

printf("%d",s1[i]-s2[i]);

break;

}

}

if(strlen(s1)==strlen(s2)&&i==min)

{

printf("0");

}

if(strlen(s1)>strlen(s2)&&i==min)

{

printf("%d",s1[i]);

}

else

{

printf("%d",-s2[i]);

}

printf("\n");

return 0;

}

最佳答案

不了解你的输出要求,但一个简单的程序被你写的太复杂了

C语言本身就有字串比较函数的

int strcmp(const char *s1, const char *s2);

而即使自己写(用指针)也是很简单(很多教材上就有)

int strcmp(const char *s1, const char *s2)
{
while( (*s1 == *s2) && (*s1) ) ++s1, ++s2;

return ((int)(unsigned char)*s1) - ((int)(unsigned char)*s2);
}

你的程序,逻辑上太乱了,如你的

if(s1[i]==s2[i])

{

}

else

可以直接用

if(s1[i]==s2[i])

{

//你原来else的内容

}

你循环退出后的判断也有问题的,不如重新写了

  • 追答:
    我复制错了,后面应该是 if(s1[i]!=s2[i]){ //你原来else的内容}
    最佳答案由网友  whoami1978  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    17

    分享到:

    其他回答

    暂无其它回答!

      推荐