【ARM 嵌入式 C 字符串系列 23 -- 返回从父字符串找到相同子字符串的个数】

2024-04-02 22:44

本文主要是介绍【ARM 嵌入式 C 字符串系列 23 -- 返回从父字符串找到相同子字符串的个数】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


请阅读【嵌入式开发学习必备专栏 】


文章目录

    • 返回从父字符串找到相同子字符串的个数

返回从父字符串找到相同子字符串的个数

在 C 语言中,可以编写一个自定义函数来计算一个父字符串(haystack)中相同子字符串(needle)出现的次数。以下是一个简单的例子来说明如何实现这个功能:

#include <stdio.h>
#include <string.h>
int count_substrings(const char *haystack, const char *needle) 
{int count = 0;const char *tmp = haystack;// 获取子字符串的长度size_t needle_len = strlen(needle);// 如果子字符串长度为0,则直接返回0if (needle_len == 0) {return 0;}// 循环遍历父字符串while ((tmp = strstr(tmp, needle)) != NULL) {// 找到一次子字符串,计数器增加count++;// 将指针移动到找到的子字符串之后,以继续搜索tmp += needle_len;}return count;
}int main(void) 
{const char *haystack = "This is a test string with test words. Testing is fun, isn't it?";const char *needle = "test";int result = count_substrings(haystack, needle);printf("The substring '%s' appears %d times in the string.\n", needle, result);return 0;
}

count_substrings 函数中,我们使用了 strstr 函数来搜索子字符串。每次当 strstr 返回一个非空指针时,意味着找到了一个匹配的子字符串,我们会增加计数器 count。然后,我们将临时指针 tmp 前移子字符串的长度,继续在接下来的字符串中搜索相同的子字符串。

main 函数中,我们调用 count_substrings 函数,并打印出子字符串在父字符串中出现的次数。

请注意,这个函数区分大小写。如果想要一个不区分大小写的版本,可以使用 strcasestr 函数(如果可用),或者可以将字符串转换为统一的大小写,然后使用 strstr。然而,strcasestr 不是标准的 ANSI C 函数,因此可能在某些平台上不可用。如果需要跨平台可移植性,最好自行实现一个不区分大小写的字符串搜索函数。

这篇关于【ARM 嵌入式 C 字符串系列 23 -- 返回从父字符串找到相同子字符串的个数】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871261

相关文章

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri