目录
前言:
每天深入了解一个字符串类函数,今天我们要学习的是strcmp函数。字符串是无法直接用比较运算符如:< 、 > 、==等进行比较的,比较运算符只能对单个字符进行比较。这时候我们就要用到strcmp函数对字符串进行比较了。
一、引用头文件
所有的库函数都要引用头文件,字符串类函数也一样,它们的头文件均为<cstring> (string.h)
引用方式如下:(每日一重复,不仅是文章需要,还是其非常重要)
C语言
#include <string.h>
C++
#include <cstring>
二、strcmp函数的作用
比较两个字符串大小。(对,就是如此简单)
三、理解strcmp函数的定义
int strcmp ( const char * str1, const char * str2 );
1、返回类型
C语言标准规定:库函数strcmp的返回类型是一个int型的数据(一个整数),当返回的整数大于0时,说明str1指向的字符串大于str2指向的字符串;当返回的整数是等于0的,则str1指向的字符串和str2指向的字符串是一样的;当返回的整数小于0时,str1指向的字符串小于str2指向的字符串。
2、参数
C语言标准规定:库函数strcmp的参数有两个,一个为const char* str1(一个字符指针,指向要比较的字符串之一),该参数前加上了const使其具备了常属性--不可被更改,一定程度上提高了函数的安全性;另一个为const char* str2(一个字符指针,指向另一个要比较的字符串),该参数前加上了const使其具备了常属性--不可被更改,一定程度上提高了函数的安全性。
四、使用strcmp函数
1、编写代码
#include <string.h>
#include <stdio.h>
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcc";
if (strcmp(arr1, arr2) > 0)
{
printf("%s > %s", arr1, arr2);
}
else if (strcmp(arr1, arr2) < 0)
{
printf("%s < %s", arr1, arr2);
}
else
{
printf("%s = %s", arr1, arr2);
}
return 0;
}
2、调试运行
五、注意要点
C语言标准只规定返回值大于0,说明str1指向的字符串大于str2指向的字符串;当返回值是等于0的,则str1指向的字符串和str2指向的字符串是一样的;当返回值小于0时,str1指向的字符串小于str2指向的字符串。但返回值到底是多少却是没规定的,有的编辑器将大于固定值为1,小于固定值为-1,等于固定值为0,而有的编辑器却不是如此。(使用时因注意)
六、模拟实现
1、了解字符串比较的方法
两个字符串从前向后依次将一个个字符进行比较,字符比较的标准为ASCII码值的大小。
例如:abcd与abcc
a与a比相等,b与b比相等,c与c比相等,d与c比d大于c,所以abcd大于abcc。
例如:abad与abcc
a与a比相等,b与b比相等,a与c比a小于c,所以abad小于abcc。
2、正式实现
#include <stdio.h>
int my_strcmp(const char* str1, const char* str2)
{
while (*str1 != '\0' || *str2 != '\0')
{
if (*str1 == *str2)
{
str1++;
str2++;
}
else
{
return *str1 - *str2;
}
}
return 0;
}
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcc";
if (my_strcmp(arr1, arr2) > 0)
{
printf("%s > %s", arr1, arr2);
}
else if (my_strcmp(arr1, arr2) < 0)
{
printf("%s < %s", arr1, arr2);
}
else
{
printf("%s = %s", arr1, arr2);
}
return 0;
}
每日一学,今天你又超过了百分之九十九的人。
如果本篇文章对你有帮助,请点个关注和赞吧!