C语言,编写类似strcmp的函数

在C语言中,有一个strcmp函数,其功能是比较两个字符串s1和s2。请编写一个你自己的字符串比较函数my_strcmp,来实现strcmp函数的类似功能。如果s1=s2,则返回0;否则返回s1 与s2 第一个不同字符的差值(如果s1<s2,该差值是一个负数;如果s1>s2,该差值是一个正数)。编写测试程序,输入两个长度小于1000的字符串(可能包含有空格,且长度不一定相等),然后调用my_strcmp函数来进行比较,并输出返回结果。

#include <stdio.h>
//函数  判断两个字符串是否相等
//int my_strcmp(const char *p,const char *q);

int my_strcmp(const char *p,const char *q) {
    while(*p==*q && *p != '\0') {
        p++;
        q++;
    }
    return *q-*p;
}
int main() {
//要想两个字符串是自己输入的话加个scanf就好啦
    char  a[1000];
    char  b[1000];
    gets(a);gets(b);
    int result ;
    result = my_strcmp(a,b);
    if(result == 0) {
        printf("两个字符串相等\n");
    } else {
        printf("%d \n",result);
    }
    return 0;
}


/*参考自:
《用C语言自己写一个strcmp函数》, https://blog.csdn.net/qq_43308896/article/details/106115530
*/


int my_strcmp(const char *str1,const char *str2)
{
    /*不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++,
    return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/
    while(*str1 == *str2)
    {
        assert((str1 != NULL) && (str2 != NULL));       
        if(*str1 == '\0')
            return 0;
        str1++;
        str2++;
    }
    return *str1 - *str2;
}