如何在C语言中进行字符串的查找操作?

2023-11-04

首先,要进行字符串的查找操作,我们需要使用到C语言中的字符串函数。这些函数包括strlen()、strcmp()、strcat()、strcpy()、strstr()等等,它们可以实现字符串的长度计算、比较、拼接、复制、查找等操作。

如果要在一个字符串中查找另外一个子串,我们可以使用strstr()函数来实现。这个函数的作用是在一个字符串中查找一个指定子串的首次出现位置,如果找到了就返回指向该位置的指针,否则返回NULL。

下面是一个简单的例子,假设我们要查找字符串str中是否包含子串
sub_str:

#include <stdio.h>
#include <string.h>

int main()
{
    char str[] = "Fish is very smart and funny!";
    char sub_str[] = "smart";
    char *result;

    result = strstr(str, sub_str);

    if(result == NULL)
        printf("'%s' not found in '%s'\n", sub_str, str);
    else
        printf("'%s' found in '%s' at position %ld\n",
               sub_str, str, result - str);

    return 0;
}

这个例子中,我们首先定义了两个字符数组str和sub_str,分别表示原始字符串和需要查找的子串。然后我们使用strstr()函数来查找子串在原始字符串中的出现位置,并将返回的指针赋值给result变量。

接着,我们使用一个简单的判断条件来确定子串是否被找到了。如果strstr()函数返回的指针是NULL,表示在原始字符串中没有找到子串,那么就打印一条提示信息’smart’ not found in ‘Fish is very smart and funny!’。否则,我们可以利用指针的差值来计算子串在原始字符串中的位置,并打印一条提示信息’smart’ found in ‘Fish is very smart and funny!’ at position 12。

在使用strstr()函数进行字符串查找时,需要注意一些参数的使用。这个函数的参数与大多数字符串函数一样,都是字符串类型的指针。第一个参数是需要查找的字符串,第二个参数是需要查找的子串。如果函数执行成功,返回子串在原始字符串中的首次出现位置的指针;如果失败,返回NULL。具体使用方法可以参考上面的代码示例。

还有,需要注意的是strstr()函数是区分大小写的,因此如果原始字符串中包含的子串与需要查找的子串大小写不一致,那么查找操作将是不成功的。如果需要忽略大小写来进行字符串查找操作,可以使用strcasestr()函数。

此外,如果需要查找指定字符串在一个大字符串中的所有出现位置,可以借助循环和指针的操作来实现。具体做法是,使用循环不断地在大字符串中查找子串,每找到一次,就记录一下该子串在原始字符串中的位置,并将指针移动到该子串的后面,继续查找直到结束。

下面是相应的代码示例:

#include <stdio.h>
#include <string.h>

int main()
{
    char str[] = "Fish is very smart and funny, Fish can swim really fast!";
    char sub_str[] = "Fish";
    char *result = str;
    int count = 0;

    while((result = strstr(result, sub_str)) != NULL)
    {
        printf("'%s' found at position %ld\n",
               sub_str, result - str);
        count++;
        result++;
    }

    if(count == 0)
        printf("'%s' not found in '%s'\n", sub_str, str);
    else
        printf("Found %d occurences of '%s' in '%s'\n",
               count, sub_str, str);

    return 0;
}

这个例子中,我们在一个大字符串str中查找子串sub_str,然后将每次查找到的位置记录下来。具体做法是,使用strstr()函数不断查找子串的出现位置,并使用指针移动到该子串的下一个位置,继续查找直到结束。在每一次查找到子串的位置后,我们打印一条提示信息,并将查找次数加1。

最后,我们根据查找到的次数判断查找操作是否成功。如果查找次数为0,表示在原始字符串中没有找到任何一个子串,那么就打印一条提示信息’Fish’ not found in ‘Fish is very smart and funny, Fish can swim really fast!’;否则,我们打印一条信息Found 2 occurences of ‘Fish’ in ‘Fish is very smart and funny, Fish can swim really fast!’,表示在原始字符串中找到了2个子串。

好了,希望这些补充和实例可以帮助你更好地理解C语言中的字符串查找操作。

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

如何在C语言中进行字符串的查找操作? 的相关文章

  • 【计算机毕业设计】电影院订票信息管理系统

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统电影院订票采取了人工的管理方法 但这种管理方法存在着许多弊
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • 【计算机毕业设计】毕业生就业管理微信小程序_lm9q0

    腾讯公司在2017年1月19日发布了一款不需要下载 不需要卸载 不需要存储的软件叫微信小程序 受到了很多人的喜欢 微信小程序自2017年发布至今 依托微信的社交属性和庞大的用户基数 已经渗透到生活的方方面面 1 微信小程序可以将基于微信平台
  • 【C++】__declspec含义

    目录 一 declspec dllexport 如果这篇文章对你有所帮助 渴望获得你的一个点赞 一 declspec dllexport declspec dllexport 是 Microsoft Visual C 编译器提供的一个扩展
  • qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““

    系统环境 Win10家庭中文版 Qt 5 12 9 链接了一些64位的第三方库 程序编译完运行后出现 qt qpa plugin Could not find the Qt platform plugin windows in 弹窗如下 网
  • 华为OD统一考试 Python【数字转化】

    描述 我们想要一种特殊的整数编码方式 让数字小的时候 编码占的空间也小 编码的方法如下 我们每7位组成一部分来编码 在每个字节里 用前7位来存数字 如果后面还有数据 最高的那一位就是1 否则就是0 数据要按小端序保存 也就是说 小的数据部分
  • 机器学习算法实战案例:Informer实现多变量负荷预测

    文章目录 机器学习算法实战案例系列 答疑 技术交流 1 实验数据集 2 如何运行自己的数据集 3 报错分析 机器学习算法实战案例系
  • 计算机Java项目|尤文图斯足球俱乐部网上商城系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|在线图书管理

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 最新整理Java面试八股文,大厂必备神器

    在此 我采访了数十名大厂的面试官和上百的的面试者 总结出了这一套Java面试八股文 这套八股文已经帮助了上百人拿到自己心仪的offer 我们先来看看这套八股文 Java基础面试八股文 操作系统中 heap 和 stack 的区别 什么是基于
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • C++实现函数重载的原理

    一 函数重载的概念 C 中允许存在同名函数 但要求函数参数的类型 个数不同 这些同名函数就称为函数的重载 void func int a int b cout lt lt func int a int b lt lt endl void f
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 计算机Java项目|有机蔬菜商城

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • sychnorized积累

    sychnorized 1 对象锁 包括方法锁 默认锁对象为this 当前实例对象 和同步代码块锁 自己指定锁对象 2 类锁 指synchronize修饰静态的方法或指定锁对象为Class对象 3 加锁和释放锁的原理 现象 时机 内置锁th
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 软件测试/测试开发|给你剖析闭包与装饰器的魔力

    测试管理班是专门面向测试与质量管理人员的一门课程 通过提升从业人员的团队管理 项目管理 绩效管理 沟通管理等方面的能力 使测试管理人员可以更好的带领团队 项目以及公司获得更快的成长 提供 1v1 私教指导 BAT 级别的测试管理大咖量身打造
  • 【安全】Java幂等性校验解决重复点击(6种实现方式)

    目录 一 简介 1 1 什么是幂等 1 2 为什么需要幂等性 1 3 接口超时 应该如何处理 1 4 幂等性对系统的影响 二 Restful API 接口的幂等性 三 实现方式 3 1 数据库层面 主键 唯一索引冲突 3 2 数据库层面 乐
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我
  • Woocommerce:添加第二个电子邮件地址不起作用,除非收件人是管理员

    我尝试了多种方法来向 Woocommerce 电子邮件添加其他收件人 但它似乎仅适用于主要收件人是管理员的测试订单 这些是我尝试过的片段 如果订单的客户是管理员 则电子邮件将发送到这两个地址 如果订单包含客户电子邮件地址 则仅发送至该电子邮

随机推荐

  • 第十九届“华为杯”研究生数学建模竞赛总结

    目录 一 前言 二 前提准备 2 1 寻找队友 2 2 赛前训练 2 3 赛前资料搜集 2 4 赛前分工 三 比赛时间规划 四 比赛过程 4 1 比赛选题 4 2 正赛开始 4 3 前期思路 4 4 难点 4 5 解决难点 4 6 规定时间
  • linux无桌面运行javafx图形界面程序

    第一步 安装mini版centos7 第二步 配置网卡IP和开机自启 可以用nmtui配置 伪图形界面 第三步 yum安装所有xorg服务和xterm服务 yum install xorg xterm y 第四步 解压jdk 8u291 l
  • Flask 学习记录

    python环境 1 安装 pyenv 用来切换各个python版本 pyenv的安装方式包括多种 重点推荐采用pyenv installer的方式 原因主要有两点 a 通过pyenv installer可一键安装pyenv全家桶 后续也可
  • [原创] 关于 “中国天气网 - www.weather.com.cn” 相关的 API 总结

    现在关于天气预报的手机应用是非常的多 包括那些非常著名的应用 我就不指名了 大家应该都用过 我就纳了闷了 一个预报天气的应用把天气好好的预报了就得了呗 非得加那么多没有用的功能 弄得应用本身越来越臃肿 而且速度越来越慢 你们到底要干什么吗
  • 最大正方形(前缀和)

    原题链接 题目描述 在一个 n m 的只包含 0 和 1 的矩阵里找出一个不包含 0 的最大正方形 输出边长 输入描述 输入文件第一行为两个整数 n m 1 lt n m lt 100 接下来 n 行 每行 m 个数字 用空格隔开 0 或
  • 2022年5月25 面试记录

    2022年5月25日 天气雨转晴 约的下午两点半面试11点出发的一点到的公司门口 他们在午休时间 我看前台右侧走廊有小沙发就索性坐在那等 一边记单例模式 是在一个园区 3栋五楼 同着的还有三家其他的企业 对门好像是做运输的 上午上了两节课
  • 多台电脑环境下Python统一相同的库及对应版本

    工作时很容易遇到这种情况 就是公司电脑和个人电脑Python中对应的库的版本甚至种类不同 这样就可能导致用个人电脑编写的代码在公司电脑上跑不了 或者别的什么原因需要统一版本库 可以通过以下方式解决 当然有别的方式 例如Docker 首先 在
  • CentOS 7 开放3306端口(实现MySQL远程登陆)

    一 开放3306端口 1 开启端口3306 firewall cmd zone public add port 3306 tcp permanent 2 重启防火墙 firewall cmd reload 3 查看已经开放的端口 firew
  • ajax的使用 json格式传参

    json格式被认为进行ajax前后端交互比较方便 这里就贴上前端js的相关代码 首先绑定一个按钮 被点击时触发ajax方法 sendEmail btn on click function ajax type post 请求类型为post 关
  • 微服务项目nginx前后台配置实例

    微服务项目nginx配置实例 1 准备好nginx服务我本地版本是nginx 1 18 0 zip 2 将前台代码放入nginx html目录下 3 将修改config nginx conf文件 user nobody worker pro
  • ubuntu问题g++ : 依赖: g++-4.8 (>= 4.8.2-5~) 但是它将不会被安装

    截图中选取了一个等同的例子 python dev 依赖 libpython dev 2 7 5 5ubuntu3 但是它将不会被安装 凡是遇到类似问题 括号里面会是一些版本号 这通常代表的意思是Ubuntu自生安装的软件包版本高 而所安装软
  • [非线性控制理论]4_反馈线性化_反步法

    非线性控制理论 1 Lyapunov直接方法 非线性控制理论 2 不变性原理 非线性控制理论 3 基础反馈稳定控制器设计 非线性控制理论 4 反馈线性化 反步法 非线性控制理论 5 自适应控制器 Adaptive controller 非线
  • C语言编译器

    C语言编译器是指用于将C语言源代码转换成可执行程序的工具软件 编译器将C语言源程序转化为目标代码的过程称为编译 目标代码通常是机器码 可由计算机直接执行 常见的C语言编译器有 GCC GNU Compiler Collection GNU编
  • 【C++入门】文件流(fstream)介绍和使用

    1 打开函数 open mode 含义 ios in 以读取方式打开文件 ios out 以写入方式打开文件 ios binary 以二进制方式存取 ios ate 存取指针在文件末尾 ios app 写入时采用追加方式 ios trunc
  • 一个 SPI 转串口驱动的优化

    rel File List href file C 5CDOCUME 7E1 5Czjujoe 5CLOCALS 7E1 5CTemp 5Cmsohtml1 5C01 5Cclip filelist xml gt 一个 SPI 转串口驱动的
  • JavaScript动态加载CSS的三种方法

    JavaScript动态加载CSS的三种方法 CSDN Blog推出文章指数概念 文章指数是对Blog文章综合评分后推算出的 综合评分项分别是该文章的点击量 回复次数 被网摘收录数量 文章长度和文章类型 满分100 每月更新一次 如果你有很
  • 程序员也要学英语——印欧语音变规律总结

    目录 一 印欧语音变规律 二 口诀汇总 三 元音互换 a e i o u w y 1 词根 uni 一 统一 2 词根 tri 三 四 u v w 1 词根 nov 新 2 词根 vol 意愿 五 b p m f v 1 词根 bene 好
  • U3D打包DLL插件 DLL Builder

    前面的文章讲过如何通过cmd打包dll文件 文章链接 实际中 需求一般是很多文件需要打包到一个dll时 此时 一个一个添加打包吗 这里介绍一个很不错的插件 DLL Builder 商店地址 九块九 包邮 这是一个可视化的dll打包工具 可以
  • 小米SOAR

    小米soar工具安装 系统Ubuntu 18 04 更新下apt get包 防止报错 sudo apt get update sudo apt get install sudo apt get upgrade 安装Go语言 sudo apt
  • 如何在C语言中进行字符串的查找操作?

    首先 要进行字符串的查找操作 我们需要使用到C语言中的字符串函数 这些函数包括strlen strcmp strcat strcpy strstr 等等 它们可以实现字符串的长度计算 比较 拼接 复制 查找等操作 如果要在一个字符串中查找另