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则输出负值
用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为
答案:5 悬赏:0 手机版
解决时间 2021-02-26 04:09
- 提问者网友:沉默的哀伤
- 2021-02-25 10:39
最佳答案
- 五星知识达人网友:过活
- 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不符合标准……
====
[原创回答团]
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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯