头文件:<string.h> 功能:逐个比较字符串中的字符
我们先看一下对strcmp
的介绍👇🏻
⭐对重要的内容解读一下与数理: ●功能(执行过程): 1,从每个字符串的第一个字符开始依次进行字符的对应比较 2,如果字符相等,则进行下一个字符的比较 ●返回值: 1,两个字符串的内容完全相同时,返回0 2,当出现对应字符不相等时: 若str1中的字符(ASCII值)> str2中的字符,返回>0的数字 若str1中的字符(ASCII值)> str2中的字符,返回<0的数字
下面请看使用的例子👇🏻
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcd";
char arr3[] = "abc";
char arr4[] = "abd";
printf("%d\n", strcmp(arr1, arr2));
printf("%d\n", strcmp(arr1, arr3));
printf("%d\n", strcmp(arr1, arr4));
return 0;
}
我们让arr1
分别与 arr2
,arr3
,arr4
进行比较
依据我们上面的学习,我们可以做出一下判断:
1,arr1
和arr2
完全相同,所以应该返回0
2,arr1
和arr3
相比,前3个字符相同,第四个字符‘d’>‘\0’,所以应该返回一个>0
的数字
3,arr1
和arr4
相比,前2个字符ab相同,但是,第三个字符‘c’<‘d’,所以返回一个<0
的数字
来看输出结果🔍
和我们预料的一样
可以观察到参数多了一个size_t num
,这个表示的是比较的字符的个数
对两个字符串的前num个字符进行比较,比较的规则如同strcmp
我们借助strcmp中的例子,来使用一下strncmp,比较字符串的前三个字符👇🏻
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcd";
char arr3[] = "abc";
char arr4[] = "abd";
printf("%d\n", strncmp(arr1, arr2,3));
printf("%d\n", strncmp(arr1, arr3,3));
printf("%d\n", strncmp(arr1, arr4,3));
return 0;
}
输出结果🔍
arr1
与arr3
比较,因为只比较前三个字符,所以不进行第四个字符的比较,前三个字符完全相同,则返回0
strstr的功能是:在字符串str1
中找字符串str2
👇🏻
⭐对重要的内容解读一下与数理:
●功能(执行过程):
1,在str1
中找str2
2,若找到了,则返回str2
在str1
中第一次出现的位置(地址)
3,若没找到,则返回空指针
●注意:
1,字符串的比较匹配不包含\0
,以\0
为结束标志(也就是说在str1
中遇到\0
就会停止查找)
请看使用实例👇🏻
#include<stdio.h>
#include<string.h>
int main()
{
char str1[] = "abcdabcd";
char str2[] = "abc\0dabcd";
char str[] = "bcd";
//在str1里面找str
if (strstr(str1, str) == NULL)
printf("没找到\n");
else
printf("%s\n", strstr(str1, str));
//在str2里面找str
if (strstr(str2, str) == NULL)
printf("没找到\n");
else
printf("%s\n", strstr(str2, str));
return 0;
}
输出结果🔍
可见,在str1
中找到了,并且返回了第一次找到时的地址,所以才从第一个b
的位置开始打印
在str2
中最后也有bcd
,但是因为在前面遇到了\0
所以停止了查找,且在停止前未找到,所以返回NULL