前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言——字符函数和字符串函数(二)

C语言——字符函数和字符串函数(二)

作者头像
用户11029137
发布2024-03-19 15:44:31
910
发布2024-03-19 15:44:31
举报
文章被收录于专栏:编程学习

一,strcmp和strncmp

头文件:<string.h> 功能:逐个比较字符串中的字符

1,strcmp

我们先看一下对strcmp的介绍👇🏻

⭐对重要的内容解读一下与数理: ●功能(执行过程): 1,从每个字符串的第一个字符开始依次进行字符的对应比较 2,如果字符相等,则进行下一个字符的比较 ●返回值: 1,两个字符串的内容完全相同时,返回0 2,当出现对应字符不相等时: 若str1中的字符(ASCII值)> str2中的字符返回>0的数字str1中的字符(ASCII值)> str2中的字符返回<0的数字

下面请看使用的例子👇🏻

代码语言:javascript
复制
#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 分别与 arr2arr3arr4进行比较 依据我们上面的学习,我们可以做出一下判断: 1,arr1arr2完全相同,所以应该返回0 2,arr1arr3相比,前3个字符相同,第四个字符‘d’>‘\0’,所以应该返回一个>0的数字 3,arr1arr4相比,前2个字符ab相同,但是,第三个字符‘c’<‘d’,所以返回一个<0的数字

来看输出结果🔍

和我们预料的一样

2,strncmp

可以观察到参数多了一个size_t num,这个表示的是比较的字符的个数 对两个字符串的前num个字符进行比较,比较的规则如同strcmp 我们借助strcmp中的例子,来使用一下strncmp,比较字符串的前三个字符👇🏻

代码语言:javascript
复制
#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;
}

输出结果🔍

arr1arr3比较,因为只比较前三个字符,所以不进行第四个字符的比较,前三个字符完全相同,则返回0

二,strstr

strstr的功能是:在字符串str1中找字符串str2 👇🏻

⭐对重要的内容解读一下与数理: ●功能(执行过程): 1,在str1中找str2 2,若找到了,则返回str2str1中第一次出现的位置(地址) 3,若没找到,则返回空指针 ●注意: 1,字符串的比较匹配不包含\0,以\0为结束标志(也就是说在str1中遇到\0就会停止查找)

请看使用实例👇🏻

代码语言:javascript
复制
#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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,strcmp和strncmp
    • 1,strcmp
      • 2,strncmp
      • 二,strstr
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档