编写strcmp函数

(求改正后的代码)可以帮忙看一下问题在哪里吗,一共有三个测试点,两个正确,唯一一个不正确的是两个字符串的前两个字符相等,第三个不一样,我在自己编写的strcmp函数中对字符串中字符相等的情况用了continue跳出当前循环,为啥还是不对?

img

img

img

img

img

img


#include<stdio.h>
int strcmp(char *p1,char *p2){
    /*********Begin*********/
    int i;
    for(i=0;i<110;i++)
    {
if(*p1++<*p2++)
{
    strcmp<0;
}else if(*p1++>*p2++)
{
    strcmp>0;
}else
{
    continue;
}
    }
    /*********End**********/
}
int main(void)
{
    char a[110],b[110];
    scanf("%s%s",a,b);
    if(strcmp(a,b)>0)
        printf("%s", a);
    else
        printf("%s", b);


    return 0;

for循环不能到i<110啊,字符串没有那么长

#include <stdio.h>
int strcmp(char *a,char *b)
{
    int i=0;
    while(*(a+i) != '\0' && *(b+i) != '\0')
    {
        if(*(a+i) > *(b+i))
            return 1;
        else if(*(a+i) < *(b+i))
            return -1;
        i++;
    }
    if(*(a+i) == '\0' && *(b+i) == '\0')
        return 0;
    if(*(a+i) != '\0')
        return 1;
    return 0;
}

 
int main()
{
    char a[110],b[110];
    scanf("%s%s",a,b);
    if(strcmp(a,b)>0)
        printf("%s",a);
    else
        printf("%s",b);
    return 0;
}

你的代码提供一下。

int strcmp(const  char *str1,const  char *str2)
{
 assert(str1!=NULL && str2!=NULL);
 if(str1==NULL || str2==NULL)
 {
   return 0;
 }
 int tmp=0;
 while((tmp=*str1-*str2)==0&&*str1!='\0')
 {
  str1++;
  str2++;
 }
 return tmp;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632