模拟实习strcmp之前我们先来了解一下strcmp的功能。
strcmp用于比较两个字符串。逐个逐个进行比较,如果有字符不同,按照字典顺序进行比较。如果该位置arr1较大,返回大于零的数字;如果该位置arr1较小,返回小于零的数字。如果一直比较到‘\0’的时候依然相等,返回0;
使用注意:
①返回值是int类型
②按照字典顺序进行比较,不是按照长度进行比较。
③'\0'或者有差异的位置就停下来
我们先来看一下该函数的一个使用
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = { "abcdef" };
char arr2[] = { "abcdef" };
printf("%d\n", strcmp(arr1, arr2));
return 0;
}
(在vs2019中,如果arr1较大,则返回1;如果较小,则返回-1)
接下来让我们来模拟实现一下
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int my_strcmp(const char* str1, const char* str2)
{
while (*str1 == *str2)
{
if (*str1=='\0'||*str2=='\0')
{
return 0;
}
str1++;
str2++;//判断是否相等
}
if (*str1 > *str2)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
char arr1[] = { "abcdef" };
char arr2[] = { "abcdef" };
printf("%d\n", my_strcmp(arr1, arr2));
return 0;
}