永发信息网

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

答案:5  悬赏:0  手机版
解决时间 2021-02-26 04:09
  • 提问者网友:沉默的哀伤
  • 2021-02-25 10:39
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则输出负值
最佳答案
  • 五星知识达人网友:过活
  • 2021-02-25 11:12
最简实现:

int strcmp (char* p1, char* p2)
{
while(*p1 && *p2 && *p1 == *p2)
{
++p1;
++p2;
}
return *p1 - *p2;
}
另外,LS错误:C/C++中不等号是!=,不是<>;此外,不符合LZ给的题意(实现的是memncmp的半成品- -...);void main不符合标准……
====
[原创回答团]
全部回答
  • 1楼网友:西岸风
  • 2021-02-25 15:35
int mystrcmp(const char *p1,const char *p2) { int ret; do { ret = *p1 - *p2++; } while (!ret && *p1++); return ret; }
  • 2楼网友:轻熟杀无赦
  • 2021-02-25 14:48
如果第一个字符就相等返回什么呢?你应该把bad初始化为0 如果第一个字符就不同,那么就可以判定字符串的大小了,就不能继续循环了,而且你的循环你也没判断字符串末尾 int strcmp(char *p1, char* p2) { while (*p1 && *p2 && *p1 == *p2) { p1++; p2++; } return *p1 - *p2; }
  • 3楼网友:千杯敬自由
  • 2021-02-25 13:35
#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; } } }
  • 4楼网友:七十二街
  • 2021-02-25 12:03
偶就是随便一写。 编译器有很多种 我用的vc就可以void main(); int strcmp(char * p1,char * p2) { while((*p1 == *p2)&&*p1&&*p2) { p1++; p2++; } return *p1-*p2; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯