C中字符串查找

2023-05-16

目录

1. 查找单个字符 strchr/strrchr

2. 查找多个字符中任一字符 strpbrk

3. 查找一个子串 strstr

4.逐个检查两个字符串 strspc/strcspn


字符串查找分为:在字符串中查找单个字符,在字符串中查找多个字符,在字符串中查找子串。

查找单个字符使用strchr与strrchr;
查找多个字符使用strpbrk;
查找子串使用strstr;
strspn和strcspn,逐个检查两个字符串是否相同

和其它字符串处理函数一样,使用这些函数时需要包含头文件 <string.h>

1. 查找单个字符 strchr/strrchr

strchr与strrchr函数声明如下:

char *strchr(const char *s, int c);
char *strrchr(const char *s, intc);

这两个函数都是从字符串s中查找字符c,如果找到字符c就返回,返回值指向这个位置,如果没有找到字符c,返回NULL。

strchr与strrchr函数的不同在于:strchr从左向右查找字符,strrchr从右向左查找字符。

使用示例,在字符串str中查找字符c并打印结果:

	char *str = "When we let go of something.it opens up a little space to grow.";
	int c = 'g';
	char *ppos = strchr(str,c);
	char *ppos1 = strrchr(str,c);

	printf("str\t\t= %s\n",str);
	printf("strchr ret\t= %s\n",ppos);
	printf("strrchr ret\t= %s\n",ppos1);

输出结果如下:

str                = When we let go of something.it opens up a little space to grow.
strchr ret     = go of something.it opens up a little space to grow.
strrchr ret    = grow.

2. 查找多个字符中任一字符 strpbrk

strpbrk函数声明:

char *strpbrk(const char *s1, const char *s2);

strpbrk函数在源字符串s1中按从前往后的顺序找出最先含有字符串s2中任一字符的位置并返回,不包含'\0',如果找不到返回空指针。函数定义如下:

char *strpbrk(const char *s1, const char *s2)
{
	while( *s1 != '\0')
	{
		const char *a = s2;
		while(*a != 0)
		{
			if(*a++ == *s1)
				return (char*)s1;
			++s1;
		}
	}
}

使用示例:

	char *str = "When we let go of something.it opens up a little space to grow.";
	char* str2 = "met";
	char *ppos2 = strpbrk(str,str2);
	printf("str\t\t= %s\n",str);
	printf("strpbrk ret\t= %s\n",ppos2);

输出结果:

str             = When we let go of something.it opens up a little space to grow.
strpbrk ret     = en we let go of something.it opens up a little space to grow.

3. 查找一个子串 strstr

strstr函数声明:

char *strstr(const char *str1, const char *str2);

strstr函数在字符串str1中从左到右查找str2,str1连续包含str2中的所有字符时,返回str1中第一次出现str2的位置的指针,如果没有找到,返回NULL。

使用示例:

	char *str = "When we let go of something.it opens up a little space to grow.";
	char* str2 = "met";
	char *ppos3 = strstr(str,str2);
	printf("str\t\t= %s\n",str);
	printf("strstr ret\t= %s\n",ppos3);

输出结果:

str             = When we let go of something.it opens up a little space to grow.
strstr ret    = mething.it opens up a little space to grow.

4.逐个检查两个字符串 strspc/strcspn

strspn和strcspn函数声明:

size_t strspn(const char *s,const char *accept);
size_t strcspn(const char *s,cosnt char *reject);

strspn从字符串s的第一个字符开始,逐个检查与字符串accept中的字符是否不相同,如果不相同,停止检查,返回以字符串s开头连续包含accept内的字符的数目;

strcspn从字符串s的第一个字符开始,逐个检查与reject中的字符是否相同,如果相等,停止检查,返回以字符串s开头连续不含字符串reject内的字符数目,

使用示例:

	char *str = "When we let go of something.it opens up a little space to grow.";
char *str3 = "bdjk";
	size_t pos1 = strspn(str,str3);
	size_t pos2 = strcspn(str,str3);

	printf("%s = %d\n",str3,pos1);
	printf("%s = %d\n",str3,pos2);

	char *str4 = "When";

	pos1 = strspn(str,str4);
	pos2 = strcspn(str,str4);

	printf("%s = %d\n",str4,pos1);
	printf("%s = %d\n",str4,pos2);

输出结果:

str             = When we let go of something.it opens up a little space to grow.
bdjk = 0
bdjk = 63
When = 4
When = 0

使用strspn和strcspn时需要注意:

        使用strspn时,当第一个字符不相同或者字符串s不包含accept中的任一字符时,返回0;
        使用strcspn时,当第一个字符相同时,返回0;当字符串s不包含accept的任一字符时,返回字符串长度。

参考:字符串查找函数,C语言字符串查找函数详解 (biancheng.net)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C中字符串查找 的相关文章

随机推荐

  • CSDN 编写数学公式参考文档

    CSDN markdown 编辑器使用的是 katex 来完成对 TeX 公式的解析 公式得紧挨两个 符内部 xff0c 而且第一个 后面不能有空格 xff0c 第二个 前面不能有空格 想要换行居中的话 xff0c 得使用两次 来将公式框起
  • 1、AI系统简介及AI系统的分类

    AI系统简介 AI这个缩写在越来越多的出现在公众面前 但是AI到底是什么就和AI这个词一样 大部分都能举一些例子 但是都却很难说清楚AI到底是什么 AI是Artificial Intelligence的简称 中文叫做人工智能 但是要找到一个
  • 六关节机器人工具坐标系位姿计算函数

    span class token keyword void span span class token function clacToolPose span span class token punctuation span RcEuler
  • ORB-SLAM2项目数据集运行(一)

    作为一名学习一年的机器视觉的学生 xff0c 一直以来都没有写过像样点的自己的东西 xff0c 真的是不像话 xff0c 虽然有时候觉得会占用一些时间 xff0c 但是能很大程度上帮助自己理解 从github上可以下载到源码 xff1a h
  • string是否以‘\0’结尾

    今天刷题 xff0c 刷着刷着发现了一个问题 xff0c 我好想对string这个了解不是很深 xff0c 我之前是把它跟C语言中的char类型总是分不清 xff0c 所以今天题也不刷了 xff0c 试着了解它们俩到底有什么区别 在C语言中
  • Matlab中函数fopen、fread、fseek和fwrite的用法

    1 fopen 打开文件或获取关于打开文件的信息 xff0c 下面以使用最多的情况为例 xff1a fileID 61 fopen filename permission xff1a 打开文件 xff0c 成功时 xff0c 返回一个大于或
  • PCB设计-四层板变两层板

    四层板变成两层板原本思路是 xff1a 从原理图导出一份asc文件 xff0c 将原先四层板的PCB封装全部保存到一个库里面去 xff0c 然后在PADS里导入asc文件 xff0c 然后将原先的结构定位从原来的PCB板上复制过来 xff0
  • Pycharm导入Django项目

    Pycharm导入Django项目 添加项目 xff1a file gt open 找到项目所在的位置打开项目 添加django后台项目路径 file gt settings gt Languages amp Frameworks 找到Dj
  • Windows安装多个python解释器

    Windows安装多个python解释器 注 xff1a 此方法仅仅是针对安装多个需要配置环境变量的解释器 xff0c 意思是可以在cmd中可以使用并完美切换的 xff1b 针对一个环境变量的解释器无效 xff0c 只有一个环境变量的主解释
  • Go语言开发环境搭建

    一 Windows下安装 安装Go开发包 官网下载Go语言开发包 xff0c 安装方法就是next xff0c 除了安装位置选择 安装目录选定一个好记的 尽量不要放在C盘中 xff0c 除非你盘空间很大 xff0c 完全够用 此路径需要自己
  • Django Rest Framework的使用整理

    Django Rest Framework 一 Rest Framework的基本介绍 程序的客户端有很多 xff1a 硬件设备 xff0c 游戏 xff0c APP xff0c 软件 xff0c 其他的外部服务端 1 Web应用模式 在开
  • Linux部署Python项目

    项目部署 项目部署的操作通常是由运维人员来进行统一管理装配的 xff0c 但是对于一个开发人员来讲 xff0c 基础的项目部署还是要会的 这里我主要讲解python的项目是如何部署的 xff0c 至于项目哪里来的 xff0c 这就要看观众如
  • 2、机器学习简介及其分类

    简介 机器学习是指让机器从数据中自动学习规律和知识 并利用这些规律和知识进行预测或决策的技术 机器学习包括监督学习 无监督学习 强化学习 其中监督学习也被称作有监督的学习 有监督的意思就是预先知道据有什么样的目标 通过一些已经知道结果的数据
  • VScode启动Vue项目

    VScode启动Vue项目 1 使用VScode打开文件夹 2 找到运行按钮 3 判断有没有默认的配置文件存在 4 若文件夹存在就检查配置文件是否存在 xff08 1 xff09 打开launch json xff0c 把如下代码粘贴到里面
  • Gunicorn+django部署

    部署前提是服务器中要有项目中所需的其他服务 xff0c 例 xff1a mysql数据库 xff0c nginx xff0c python解释器等 xff0c 在其他环境搭好的情况下使用此方式可简单部署一个django项目 至于安装上面提到
  • Protobuf生成文件报错

    Mac下protobuf生成文件报错问题解决办法 xff0c windows下就不会这么麻烦了 xff0c 如果linux下出现类似报错信息按照下面的解决逻辑依然适用 1 由 go out引发的报错 1 报错信息 xff1a user 64
  • Git操作的基本命令

    git命令常用步骤 初始化 xff0c 把当前文件夹作为git本地仓库 git init 把本地仓库与选程仓库关联 git remote add origin http gitee com 把项目区中做了修改的文件添加到暂存区 git ad
  • grpc的使用

    需要保证电脑中安装了 xff1a protobuf安装教程如果出现报错请看博客 xff1a protobuf报错问题解决基本使用demo地址 xff1a demo安全传输 流式传输的demo地址 xff1a demo2 简介 xff1a r
  • Matlab找不到新添加在路径里的.m文件

    我是把文件放在matlab toolbox路径下了 xff0c 需要更新一下toolboxcache就可以了 使用命令的方式 xff1a rehash toolboxcache
  • C中字符串查找

    目录 1 查找单个字符 strchr strrchr 2 查找多个字符中任一字符 strpbrk 3 查找一个子串 strstr 4 逐个检查两个字符串 strspc strcspn 字符串查找分为 xff1a 在字符串中查找单个字符 xf