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

📝前言:

上一篇文章C语言------字符函数和字符串函数(一)字符函数和字符串函数strlenstrcpystrncpystrcatstrncat进行了初步的讲解
这篇文章主要再讲解几个我们
常用到的其他字符串函数
(附上实例):
1,strcmp和strncmp
2,strstr

🎬个人简介:努力学习ing

📋个人专栏:C语言入门基础

🎀CSDN主页 愚润求学

🌄每日鸡汤:夜色难免黑凉,前行必有曙光


文章目录

一,strcmp和strncmp

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

1,strcmp

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

⭐对重要的内容解读一下与数理:

●功能(执行过程):

1,从每个字符串的第一个字符开始依次进行字符的对应比较

2,如果字符相等,则进行下一个字符的比较

●返回值:

1,两个字符串的内容完全相同时,返回0

2,当出现对应字符不相等时:

str1中的字符(ASCII值)> str2中的字符返回>0的数字

str1中的字符(ASCII值)> str2中的字符返回<0的数字

下面请看使用的例子👇🏻

c 复制代码
#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,比较字符串的前三个字符👇🏻

c 复制代码
#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就会停止查找)

请看使用实例👇🏻

c 复制代码
#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


🌈我的分享也就到此结束啦🌈

要是我的分享也能对你的学习起到帮助,那简直是太酷啦!

若有不足,还请大家多多指正,我们一起学习交流!

📢公主,王子:点赞👍→收藏⭐→关注🔍

感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关推荐
胡八一7 小时前
30 分钟上手 exp4j:在 Java 中安全、灵活地计算数学表达式
java·开发语言·安全
山顶听风7 小时前
Flask应用改用Waitress运行
前端·笔记·python·flask
郝学胜-神的一滴7 小时前
Linux 进程控制块(PCB)解析:深入理解进程管理机制
linux·服务器·开发语言
后端小张7 小时前
【鸿蒙开发手册】重生之我要学习鸿蒙HarmonyOS开发
开发语言·学习·华为·架构·harmonyos·鸿蒙·鸿蒙系统
胖咕噜的稞达鸭7 小时前
AVL树手撕,超详细图文详解
c语言·开发语言·数据结构·c++·算法·visual studio
-SGlow-7 小时前
Linux相关概念和易错知识点(48)(epoll的底层原理、epoll的工作模式、反应堆模式)
linux·服务器·c语言·网络·c++
007php0078 小时前
百度面试题解析:synchronized、volatile、JMM内存模型、JVM运行时区域及堆和方法区(三)
java·开发语言·jvm·缓存·面试·golang·php
芒果量化8 小时前
Optuna - 自动调参利器&python实例
开发语言·python·算法·机器学习
foundbug9998 小时前
基于CSMA-CA协议的V2X通信MATLAB仿真
开发语言·网络·matlab
cellurw8 小时前
Day67 Linux I²C 总线与设备驱动架构、开发流程与调试
linux·c语言·架构