
编一个函数,实现两个字符串的比较
编一个函数,实现两个字符串的比较。如果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);
} 展开
为什么我编的程序不对啊?应该怎么改?谢谢!
#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);
} 展开
展开全部
// 已修改好你的代码如下:
#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)); // 取误差的绝对值并返回
}
展开全部
#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
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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strcmp函数的源码:
int strcmp(const char *str1, const char *str2)
{
while (*str1==*str2)
{
if(*str1=='\0')
return 0;
str1++;
str2++;
}
return *str1-*str2;
}
int strcmp(const char *str1, const char *str2)
{
while (*str1==*str2)
{
if(*str1=='\0')
return 0;
str1++;
str2++;
}
return *str1-*str2;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询