作用:比较两个字符串的大小,按照词典序的原则对字符大小进行定义,依次比较对应的字符的大小。
实现机制:字符串传参可用指针接收,将两个指针分别指向两个字符串的起始地址,解引用比较第一个字符的大小,如果arr1>arr2则返回一个大于0的数,arr1<arr2返回一个小于0的数,arr1 = arr2时,将指针向后移动,比较下一个字符,直至一个字符串走至’\0’,则另一个字符串即为较大的字符串,如果两个字符串都走至’\0’,则说明两个字符串是相同的,一样大,则返回0。
函数实现:
int my_strcmp(const char* dest, const char* str)
{
assert(dest != NULL && str != NULL);
while (*str != '\0')
{
if (*dest < *str)
{
return -1;
}
else if (*dest > *str)
{
return 1;
}
dest++;
str++;
}
return 0;
}
参考代码:
#include <stdio.h>
#include <assert.h>
int my_strcmp(const char* dest, const char* str)
{
assert(dest != NULL && str != NULL);
while (*str != '\0')
{
if (*dest < *str)
{
return -1;
}
else if (*dest > *str)
{
return 1;
}
dest++;
str++;
}
return 0;
}
int main()
{
char arr1[1024] = "hello ";
char arr2[1024] = "hello world";
if (my_strcmp(arr1, arr2) > 0)
{
printf("arr1 > arr2\n");
}
else if (my_strcmp(arr1, arr2) < 0)
{
printf("arr1 < arr2\n");
}
else
{
printf("arr1 = arr2");
}
return 0;
}
运行结果展示:

本文深入解析了字符串比较函数的实现原理,通过词典序规则对比字符大小,详细介绍了使用指针进行字符串比较的过程,以及如何判断字符串的大小关系。
194

被折叠的 条评论
为什么被折叠?



