strcmp的使用和模拟实现

1.头文件

#include

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.

你可能感兴趣的:(c语言,前端,c语言,c++,开发语言)