1.头文件
#include<string.h>
2.标准规定
◦ 第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字◦ 第⼀个字符串等于第⼆个字符串,则返回0◦ 第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字◦ 那么如何判断两个字符串? ⽐较两个字符串中对应位置上字符ASCII码值的⼤⼩。
3.怎么使用自我理解。
strcmp全称 string compare 字符串的比较
需要传入两个参数,第一个和第二个参数都传入字符或者字符串。
然后两个字符串比较 就是按照 顺序 比较,比较他们的ASCII值。如果相等 两个参数的地址+1,在向下比较,直到出现不同,比较出结果。如果字符串相同就返回0
就像 yangjianglong 和 yangzeqi比较。因为前面的yang是相同的,那么就从 j 和 z 比较。
4.模拟实现
int my_strcmp (const char * str1, const char * str2)
{
int ret = 0 ;
assert(src != NULL);
assert(dest != NULL);
while(*str1 == *str2)
{
if(*str1 == '\0')
return 0;
str1++;
str2++;
}
return *str1-*str2;
}
代码解析。assert断言防止传入的是空指针。
返回int 的原因是 原本的 strcmp 返回的是 大于 0 的数字 和 0 和 小于 0 的数字。
用const 来限制 两个 参数,因为两个参数都是不能更改的,只是比较。
while循环的意思是,括号内表达式的意思是。如果解引用两指针的值相同。则进入循环。
如果 解引用的 str1 == ‘\0’ 即 *str2 == ‘\0’。这是就说明了 两个字符串相等 所以返回 0.
直到有不相等则跳出循环。返回 *str1 - *str2 的意思是,返回这时候两个地址内的值差。
大于0 则说明 str1 > str2.