在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;
}