永发信息网

用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为

答案:5  悬赏:0  手机版
解决时间 2021-02-26 04:09
int strcmp (char * p1,char * p2);
设p1指向字符串s1,p2指向字符串s2,要求当s1=s2时,函数返回值为0;如果s1≠s2,返回它们二者第一个不相同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不相同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如s1<s2则输出负值
最佳答案
最简实现:

int strcmp (char* p1, char* p2)
{
while(*p1 && *p2 && *p1 == *p2)
{
++p1;
++p2;
}
return *p1 - *p2;
}
另外,LS错误:C/C++中不等号是!=,不是<>;此外,不符合LZ给的题意(实现的是memncmp的半成品- -...);void main不符合标准……
====
[原创回答团]
全部回答
int mystrcmp(const char *p1,const char *p2) { int ret; do { ret = *p1 - *p2++; } while (!ret && *p1++); return ret; }
如果第一个字符就相等返回什么呢?你应该把bad初始化为0 如果第一个字符就不同,那么就可以判定字符串的大小了,就不能继续循环了,而且你的循环你也没判断字符串末尾 int strcmp(char *p1, char* p2) { while (*p1 && *p2 && *p1 == *p2) { p1++; p2++; } return *p1 - *p2; }
#include <stdio.h> int strcm(char *p1,char *p2); void main() { char str1[20],str2[20],*s1,*s2; gets(str1); gets(str2); s1=str1; s2=str2; printf("%d",strcm(*s1,*s2)); } int strcm(char *p1,char *p2) { int i,j; for(i=0;;i++) { if((p1+i)!=(p2+i)) { return ((p1+i)-(p2+i)); } else { return 0; } } }
偶就是随便一写。 编译器有很多种 我用的vc就可以void main(); int strcmp(char * p1,char * p2) { while((*p1 == *p2)&&*p1&&*p2) { p1++; p2++; } return *p1-*p2; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
I am don't like English什么意思
不是有个成语叫二龙戏珠,这个珠是什么来
求x=0,1时f(x)=1/(e(x/x-1)-1)左
神洲超市地址有知道的么?有点事想过去
民政大厦站自行车租赁点地址在什么地方,想过
自考有一门没过,下次报考时注意事项
求野比大雄家的地址!漫画动画出现的都可以!
景德路/神道街(路口)在哪里啊,我有事要去这
赠送小礼品(镜子)小小的巴掌大小,先要100
玉林市巨力物流运输有限公司在什么地方啊,我
人体注射卡介苗后,经一段时间,血液中会出现
百度为何要强行绑定查看用户联系人?选择权是
中创一线教育科技公司我想知道这个在什么地方
我是怎么打开别人电脑的摄像头的吗
部落冲突中怎样防止做广告的加入部落
推荐资讯
铅铋混合溶液中铅铋含量的连续测定实验在滴定
宏伟饭店地址在哪,我要去那里办事
番茄何时传入中国
新南威尔士大学的金融法律双学位专业好吗,毕
【斗志昂扬的反义词】自然的反义词()珍贵的反
汾平高速的各个出口在哪里,具体信息是啥
十位数尾数520的qq号值多少钱?
环球黑卡真的假的
什么是入声字
有一部韩剧,我不知道名字,我只记得其中 女
如果你在大学,尿裤子了之后,你同学在你身后
请问下国3排放的车在贵州兴义还能上牌吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?