目录
函数介绍:
头文件:
语法:
代码演示:
函数模拟:
函数介绍:
- strcmp是比较大小的函数。
- 从字符串开始进行比较,如果两个相同位置的字符相同,那么继续往下进行比较,直到遇见不同的位置。
- 从本质上,比较的是相对位置字符的ASCII值。
- 比较的标准:
- 当str1大于str2时,返回值是大于0的数
- 当str1小于str2时,返回值是小于0的数
- 当str1和str2相同时,返回值是0
头文件:
#include<string.h>;
语法:
int strcmp(const char* str1,const char * str2)
代码演示:
#include <iostream>
#include<string.h>
int main()
{
char arr1[ ] = "ABCD";
char arr2[ ] = "012345";
char arr3[ ] = "EFGH";
char arr4[ ] = "ABCD";
int a=strcmp(arr1,arr2); // 'A'的ASCII值是81 '0'的ASCII值是48,所以返回值是正数。
int b=strcmp(arr1,arr3); // 'A'的ASCII值是81 'E'的ASCII值是85,所以返回值是负数。
int c=strcmp(arr1,arr4); // 字符串的对应位置字符相同,所以返回值是0。
printf("%d %d %d",a,b,c);
return 0;
}
函数模拟:
int my_strcmp(const char* str1, const char* str2)
{
int ret = 0;
assert(src != NULL);
assert(dest != NULL);
while (*str1 == *str2)//进行对应位置的字符是否相同的判断,如果相同,那么比较ASCII值就是下一个字符
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
return *str1 - *str2;//相对因位置的字符不相同时,进行相减,相减的本质是ASCII值相减。
//得到的结果由标准来划分,正数str1大,负数str2大,等于0二者相等。
}