用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数的原型为: int strcmp(char *p1,char *p

 我来答
royrob16x8
2011-04-16 · TA获得超过524个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:109万
展开全部
给你贴个最短的代码吧,就三行,相等返回1,不相等返回0
int my_strcmp(const char *a, const char *b)
{
if (((a == 0) && (b == 0)) || ((*a == 0) && (*b == 0))) return 1; //如果已经比较到字符串结尾,则表示字符串相等
if ((strlen(a) != strlen(b)) || (a[0] != b[0])) return 0; //如果长度不相同或发现不相等字符,则表示字符串不相等
return my_strcmp(++a, ++b); //判断下一个字符
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hangeneral
2011-04-13 · TA获得超过146个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:119万
展开全部
搞不懂你为什么要自己写,性能很难比上系统的函数。
你可以单个字符比较,用指针名当数组名用,下面是简单代码
for i = 0,length1(短的字符串)
if p1[i]> p[i]
return 1
elseif <
return -1
if length1 == length2
return 0
esleif < return -1
else return 1
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6bd8b54
2011-04-24
知道答主
回答量:50
采纳率:0%
帮助的人:18.3万
展开全部
main()
{
int strcmp(char *p1,char *p2),z;
char a[100],b[100],*p1,*p2;
scanf("%s",a);scanf("%s",b);
p1=a;p2=b;
z=strcmp(p1,p2);
printf("%d",z);
}

int strcmp(char *p1,char *p2)
{int i,j;
for(i=0;i<100;i++)
if(*(p1+i)==*(p2+i))
j=0;
else {j=*(p1+i)-*(p2+i);break;}
return j;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ericsoul
2011-04-13 · TA获得超过720个赞
知道小有建树答主
回答量:759
采纳率:0%
帮助的人:668万
展开全部
#include<iostream>
using namespace std;

int strcmp(char *p1,char *p )
{
if(strlen(p1) != strlen(p)) return -1;
for( int i = 0; i < strlen(p);i++)
if((int)*(p1+i) != (int)*(p+i) )return -1;
return 0;
}
int main()
{

char a[]="test!";
char b[]="teat!";
cout<<strcmp(a,b)<<endl;
system("pause");
return 0;
}

多了半边括号 ,之后你的 函数原型里面的,号是中文 格式下的~囧。修改了下。
追问
这是作业...
追答
额,之后,呢,
代码不能用么?我是 把函数 拉到 VS2010里面去测试了下,发现那个逗号是中文的~额。还有什么问题么?欢迎追问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式