C语言比较字符串大小 没有显示错误 但是输出值是错的 应该怎么改了
#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的内容}
其他回答
暂无其它回答!