先把Strcmp函数的定义拿出来:
int strcmp(const char* arr1,const char* arr2)
若字符串1>字符串2,则函数的返回值为大于0的数(VS编译器下是1)
若字符串1=字符串2,则函数的返回值为0(VS编译器下是0)
若字符串1<字符串2,则函数的返回值为小于0的数(VS编译器下是-1)
字符串比较实际上是比较对应位置字符的ASCII码值的大小
具体的代码为:
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* arr1,const char* arr2)//比较字符串大小,目的地字符串和源头字符串的内容不发生改变(const)
{
assert(arr1 != NULL);
assert(arr2 != NULL);//确保指针的有效性
while (*arr1 == *arr2)//若对应位置字符大小相等,则进入循环
{
if (*arr1 == "\0")//若*arr1=*arr2='\0',则说明两个字符串相等
{
return 0;
}
arr1++;
arr2++;
}
if (*arr1 > *arr2)//字符串1大于字符串2,返回值大于0
{
return 1;
}
else//字符串1小于字符串2,返回值小于0
{
return -1;
}
}
int main()
{
char arr1[10] = "hello";
char arr2[] = "hi";
int a=my_strcmp(arr1,arr2);
printf("%d",a );
return 0;
}