本节重点内容:
- 深入理解strcmp函数的使用
- 学会strcmp函数的模拟实现
下面演示一种错误的比较方式:
if ("abcdef" == "bcdefg") //这里比较的是两个字符串首字符的地址,而不是字符串的内容
这种比法语法上是没有任何问题的,但是这个代码比的不是两个字符串的内容。原因是这两个字符串在作为表达式的时候,它们两的值是第一个字符的地址,因此在用==号比的时候比的其实是这两个字符串的首个字符的地址是否相等,并没有比较两个字符串的内容。
⚡strcmp
- This function starts comparing the first character of each string. If they are equal to each
other, it continues with the following pairs until the characters differ or until a terminating
null-character is reached. - 第一个字符串大于第二个字符串,则返回大于0的数字。
- 第一个字符串等于第二个字符串,则返回0。
- 第一个字符串小于第二个字符串,则返回小于0的数字。
温馨提示:VS系统下默认三个返回值分别为:-1,0,1。
⚡模拟实现strcmp函数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
#include<assert.h>int my_strcmp(const char* str1, const char* str2)
{assert(str1 && str2);while (*str1 == *str2){if (*str1 == '\0')return 0;str1++; str2++;}//if (*str1 > *str2)//return 1;//else//return -1;return *str1 - *str2;
}int main()
{char arr1[] = "abzqw";char arr2[] = "abq";printf("%d\n", my_strcmp(arr1, arr2));return 0;
}
运行结果如下:
感谢大家能够看完这篇博客,创作时长,小伙伴们觉得我的博客对你有帮助,不妨留下你的点赞的收藏,关注我,带你了解不一样的C语言。