如何在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语言中进行字符串的查找操作? 的相关文章

  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 基于java的物流信息网系统设计与实现

    基于java的物流信息网系统设计与实现 I 引言 A 研究背景和动机 基于Java的物流信息网系统设计与实现的研究背景和动机 随着互联网的普及和电子商务的快速发展 物流信息网系统已成为现代物流管理的重要组成部分 物流信息网系统能够实现物流信
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】电影院订票信息管理系统

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统电影院订票采取了人工的管理方法 但这种管理方法存在着许多弊
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 华为OD机试真题-分披萨-2023年OD统一考试(C卷)

    题目描述 吃货 和 馋嘴 两人到披萨店点了一份铁盘 圆形 披萨 并嘱咐店员将披萨按放射状切成大小相同的偶数扇形小块 但是粗心服务员将披萨切成了每块大小都完全不同奇数块 且肉眼能分辨出大小 由于两人都想吃到最多的披萨 他们商量了一个他们认为公
  • 华为OD机试2024年最新题库(Java)

    我是一名软件开发培训机构老师 我的学生已经有上百人通过了华为OD机试 学生们每次考完试 会把题目拿出来一起交流分享 重要 2024年1月 5月 考的都是OD统一考试 C卷 题库已经整理好了 命中率95 以上 这个专栏使用 Java 解法 问
  • Android Navigation的四大要点你都知道吗?

    在JetPack中有一个组件是Navigation 顾名思义它是一个页面导航组件 相对于其他的第三方导航 不同的是它是专门为Fragment的页面管理所设计的 它对于单个Activity的App来说非常有用 因为以一个Activity为架构
  • 史上最全Java面试八股文(带全部答案)2024年最新版

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 最新整理Java面试八股文,大厂必备神器

    在看这篇文章之前 我想我们需要先搞明白八股文是什么 明清科举考试的一种文体 也称制义 制艺 时文 八比文 八股文章就四书五经取题 内容必须用古人的语气 绝对不允许自由发挥 而句子的长短 字的繁简 声调高低等也都要相对成文 字数也有限制 八股
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了

    俺滴座右铭是不在沉默中爆发 就在沉默中灭亡 一起加油学习 珍惜现在来之不易的学习时光吧 等工作之后 你就会发现 想学习真的需要挤时间 厚积薄发啦 我们知道Java是面向对象的静态型编程语言 在Java的世界里万物皆对象 但我认为是万物皆数据
  • 最新整理Java面试八股文,大厂必备神器

    在此 我采访了数十名大厂的面试官和上百的的面试者 总结出了这一套Java面试八股文 这套八股文已经帮助了上百人拿到自己心仪的offer 我们先来看看这套八股文 Java基础面试八股文 操作系统中 heap 和 stack 的区别 什么是基于
  • 【go语言】读取toml文件

    一 简介 TOML 全称为Tom s Obvious Minimal Language 是一种易读的配置文件格式 旨在成为一个极简的数据序列化语言 TOML的设计原则之一是保持简洁性 易读性 同时提供足够的灵活性以满足各种应用场景 TOML
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 【Linux】文件周边001之系统文件IO

    樊梓慕 个人主页 个人专栏 C语言 数据结构 蓝桥杯试题 LeetCode刷题笔记 实训项目
  • 基于节点电价的电网对电动汽车接纳能力评估模型研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 【安全】Java幂等性校验解决重复点击(6种实现方式)

    目录 一 简介 1 1 什么是幂等 1 2 为什么需要幂等性 1 3 接口超时 应该如何处理 1 4 幂等性对系统的影响 二 Restful API 接口的幂等性 三 实现方式 3 1 数据库层面 主键 唯一索引冲突 3 2 数据库层面 乐
  • 2024免费mathtype7.4.4安装注册步骤教程

    数学建模中对公式的编辑有很高的要求 mathtype是一款专业的数学公式编辑工具 能够帮助用户在各种文档中插入复杂的数学公式和符号 一 Mathtype 的下载安装 1 1 安装前须知 解压和安装前 需要将电脑的杀毒软件或者防火墙关掉 如发
  • 在 OS X 上的 virtualenv 中安装 scrapy 加密时发生错误 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在安装 scrapypip in virtualenv on OS X 10 11 当它安装密码学时 它说 buil
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我

随机推荐

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

    目录 一 前言 二 前提准备 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 等等 它们可以实现字符串的长度计算 比较 拼接 复制 查找等操作 如果要在一个字符串中查找另