编一个函数,实现两个字符串的比较

编一个函数,实现两个字符串的比较。如果s1=s2,则函数返回值为0;如果s1!=s2,返回第一个不同字符的ASCII码差值。为什么我编的程序不对啊?应该怎么改?谢谢!#i... 编一个函数,实现两个字符串的比较。如果s1=s2,则函数返回值为0;如果s1!=s2,返回第一个不同字符的ASCII码差值。

为什么我编的程序不对啊?应该怎么改?谢谢!

#include<stdio.h>
int main(){
static char s1[80],s2[80];
int udf_strcmp(char *x,char *y);
printf("Input s1:\n");
gets(s1);
printf("Input s2:\n");
gets(s2);
printf("%d\n",udf_strcmp(s1,s2));
}
int udf_strcmp(char *x,char *y){
while((*x)==(*y))
if(x++=='\0')
return(0);
else
return(*x-*y);
}
展开
 我来答
仙戈雅3n
2013-11-21 · TA获得超过5791个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:951万
展开全部
// 已修改好你的代码如下:
#include<stdio.h>
#include<math.h>
// 函数原型声明
int udf_strcmp(char *x,char *y);
// 静态变量声明 
static char s1[80],s2[80];
int main()
{
printf("Please input s1:\n");
gets(s1);
fflush(stdin); // 清空缓冲

printf("Please input s2:\n");
gets(s2);

printf("%d\n",udf_strcmp(s1,s2));

return 1;
}
int udf_strcmp(char *x,char *y)
{
bool same=false;
while(*x&&*y){
        if(*x==*y) same=true;
else goto NotSame;

x++;
y++;
}
if(same) return 0;
NotSame:
return (int)(fabs(*x-*y)); // 取误差的绝对值并返回
}
旷若英5O
推荐于2017-11-26 · TA获得超过1045个赞
知道小有建树答主
回答量:295
采纳率:0%
帮助的人:126万
展开全部
#include<stdio.h>
int main()
{
static char s1[80],s2[80];
int udf_strcmp(char *x,char *y);
printf("Input s1:\n");
gets(s1);
printf("Input s2:\n");
gets(s2);

printf("%d\n",udf_strcmp(s1,s2));
}
int udf_strcmp(char *x,char *y)
{
while(*x==*y)
{
if(*x =='\0')
return 0;
x++;
y++;
}
return *x-*y;
}

你原来的程序只要第一个字符相同,就会进入循环,然后判断,一定会执行return(0)或者return(*x-*y)其中一个,也就是在循环跑第一遍就结束了,如果第一个不同,根本没有return
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ac29593d8
2013-11-21 · TA获得超过176个赞
知道小有建树答主
回答量:266
采纳率:0%
帮助的人:123万
展开全部
strcmp函数的源码:
int strcmp(const char *str1, const char *str2)
{
while (*str1==*str2)
{
if(*str1=='\0')
return 0;
str1++;
str2++;
}
return *str1-*str2;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式