strcmp()函数的作用是比较字符串,比较的时候逐个字符比较,函数原型如下:
int strcmp(const char *str1, const char *str2);
如果str1>str2,返回>0;
如果str1<str2,返回<0;
如果str1=str2,返回=0;
在具体实现过程中,我们需要遍历两个字符串,直到其中一个字符串结束,每一次循环都要比较两个字符串中字符大小,下面是具体的实现过程
#include <stdio.h>
int mystrcmp(char const *dst,char const *src)
{
if (dst == NULL || src == NULL)
{
printf("addr is null\n");
return -1;
}
if (dst == src)
{
printf("dst = src\n");
return 0;
}
while ((*dst) != '\0' || (*src) != '\0') //判断其中一个字符串是否结束
{
if (*dst > *src) //dst的字符比src的要大,返回>0
{
printf("dst>src\n");
return (*dst - *src);
}
else if (*dst < *src) //dst的字符比src要小,返回<0
{
printf("dst<src\n");
return (*dst - *src);
}
else if(*dst == *src) //相等返回,但是字符串没结束,dst和src要自加
{
dst++;
src++;
}
else
{
return -1;
}
}
return 0;
}
int main()
{
char dst[] = "hhh";
char src[] = "hhh";
int nRet;
nRet = mystrcmp(dst,src);
printf("nRet=%d\n",nRet);
return 0;
}
上面的注释已经解释清楚为什么要这么做。当然,这个程序是可以简化的,但是我为了简单清晰就没有写得很精简,有兴趣的可以自己简化减少代码量
本文详细解析了C语言中strcmp函数的工作原理,包括其函数原型、返回值含义及具体实现过程。通过遍历两个字符串并逐个字符比较,实现字符串大小的判断。
533

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



