【c语言】字符串常见函数 下

🎈个人主页:甜美的江
🎉欢迎 👍点赞✍评论⭐收藏
🤗收录专栏:c语言
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!

【c语言】字符串常见函数 下

  • 一、字符串搜索函数
    • 1.1 strchr (String Character):
    • 1.2 strrchr (String Reverse Character):
    • 1.3 strstr (String Search):
  • 二、字符串长度函数
    • 2.1 strlen (String Length):
  • 三、字符串分割函数
    • 3.1 strtok (String Tokenizer):

引言:

在C语言中,处理字符串是一项常见且重要的任务。为了有效地操作字符串,C语言提供了许多内置的字符串处理函数。

本文将介绍一些常见的C语言字符串函数,包括字符串搜索函数、字符串长度函数和字符串分割函数。

通过了解这些函数的用法和原理,你将能够更轻松地处理和操作字符串数据。

上半部分内容点这里。

【c语言】字符串常见函数 上

在这里插入图片描述

一、字符串搜索函数

当在C语言中需要在字符串中搜索特定字符或子字符串时,可以使用以下几个常见的字符串搜索函数:strchr、strrchr 和 strstr。下面将详细介绍它们的用法、示例以及注意事项。

1.1 strchr (String Character):

用法:

strchr 函数用于在字符串中查找指定字符的第一个匹配项,并返回该字符所在位置的指针。如果未找到指定字符,则返回 NULL。

示例:

#include <stdio.h>
#include <string.h>int main() {char str[] = "hello world";char *ptr;ptr = strchr(str, 'o');if (ptr != NULL) {printf("Found at position: %ld\n", ptr - str);} else {printf("Not found\n");}return 0;
}

结果:

Found at position: 4

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “hello world”。然后,通过调用 strchr 函数,在字符串中查找字符 ‘o’ 的第一次出现的位置,并将该位置的指针赋值给 ptr 变量。

接着,通过条件判断检查 ptr 是否为 NULL,如果不是,则表示找到了字符 ‘o’,并使用 printf 函数输出其在字符串中的位置(通过指针减法计算相对位置),否则输出 “Not found”。

最后,程序返回0,表示正常执行结束。

这段代码的作用是在字符串中查找字符 ‘o’ 的第一次出现位置,并输出结果。

在给定的示例字符串 “hello world” 中,字符 ‘o’ 第一次出现在位置 4(从零开始计数),因此输出结果为 “Found at position: 4”。

注意事项:

strchr 函数只返回第一个匹配项的指针,如果需要找到所有匹配项,可以使用循环遍历字符串。

注意处理返回值为 NULL 的情况,表示未找到匹配项。

1.2 strrchr (String Reverse Character):

用法:

strrchr 函数用于在字符串中查找指定字符的最后一个匹配项,并返回该字符所在位置的指针。如果未找到指定字符,则返回 NULL。

示例:

#include <stdio.h>
#include <string.h>int main() {char str[] = "hello world";char *ptr;ptr = strrchr(str, 'o');if (ptr != NULL) {printf("Found at position: %ld\n", ptr - str);} else {printf("Not found\n");}return 0;
}

结果:

 Found at position: 7

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “hello world”。

然后,通过调用 strrchr 函数,在字符串中从右往左查找字符 ‘o’ 的最后一次出现的位置,并将该位置的指针赋值给 ptr 变量。

接着,通过条件判断检查 ptr 是否为 NULL,如果不是,则表示找到了字符 ‘o’,并使用 printf 函数输出其在字符串中的位置(通过指针减法计算相对位置),否则输出 “Not found”。

最后,程序返回0,表示正常执行结束。

这段代码的作用是在字符串中查找字符 ‘o’ 的最后一次出现位置,并输出结果。

在给定的示例字符串 “hello world” 中,字符 ‘o’ 最后一次出现在位置 7(从零开始计数),因此输出结果为 “Found at position: 7”。

注意事项:

strrchr 函数从字符串的末尾开始搜索,找到第一个匹配项后即停止搜索,返回该匹配项的指针。

处理返回值为 NULL 的情况,表示未找到匹配项。

1.3 strstr (String Search):

用法:

strstr 函数用于在字符串中查找指定子字符串的第一个匹配项,并返回该子字符串的指针。如果未找到子字符串,则返回 NULL。

示例:

#include <stdio.h>
#include <string.h>int main() {char str[] = "hello world";char *ptr;ptr = strstr(str, "lo");if (ptr != NULL) {printf("Found at position: %ld\n", ptr - str);} else {printf("Not found\n");}return 0;
}

结果:

 Found at position: 3

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “hello world”。

然后,通过调用 strstr 函数,在字符串中查找子字符串 “lo” 的第一次出现的位置,并将该位置的指针赋值给 ptr 变量。

接着,通过条件判断检查 ptr 是否为 NULL,如果不是,则表示找到了子字符串 “lo”,并使用 printf 函数输出其在字符串中的位置(通过指针减法计算相对位置),否则输出 “Not found”。

最后,程序返回0,表示正常执行结束。

这段代码的作用是在字符串中查找子字符串 “lo” 的第一次出现位置,并输出结果。

在给定的示例字符串 “hello world” 中,子字符串 “lo” 第一次出现在位置 3(从零开始计数),因此输出结果为 “Found at position: 3”。
注意事项:

strstr 函数会从字符串中找到第一个匹配子字符串的位置,并返回该子字符串的指针。

处理返回值为 NULL 的情况,表示未找到匹配项。

这些函数是在C语言中常用的字符串搜索工具,可以根据具体需求选择合适的函数来实现字符串搜索功能。

二、字符串长度函数

当在C语言中需要获取字符串的长度时,可以使用 strlen 函数。下面将详细介绍 strlen 函数的用途、用法、示例以及注意事项。

2.1 strlen (String Length):

用途:

strlen 函数用于计算字符串的长度,即字符串中的字符个数,不包括字符串结束符(‘\0’)。

用法:

函数原型如下:

size_t strlen(const char *str);

参数 str:要计算长度的字符串。

返回值:返回字符串的长度。

示例:

#include <stdio.h>
#include <string.h>int main() {char str[] = "hello world";size_t length;length = strlen(str);printf("Length of the string: %zu\n", length);return 0;
}

结果:

Length of the string: 11

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “hello world”。

然后,通过调用 strlen 函数获取字符串的长度,并将结果赋值给 length 变量。

接着,通过使用 printf 函数输出字符串的长度,格式化字符串中 %zu 是用于打印 size_t 类型的长度。

最后,程序返回0,表示正常执行结束。

这段代码的主要功能是计算并输出字符串 “hello world” 的长度。

在给定的示例中,字符串的长度为11,因此输出结果为 “Length of the string: 11”。

注意事项:

strlen 返回的是 size_t 类型的无符号整数,因此使用 %zu 格式说明符打印结果。

注意字符串中的结束符 \0 不计入计算长度,即返回值为字符串中字符的实际个数。

这是一个简单而常用的字符串操作函数,用于获取字符串的长度。在使用时,需要注意字符串的结尾必须是空字符 \0。如果字符串没有正确以空字符结尾,strlen 可能会导致未定义的行为。

因此,在使用 strlen 时,确保字符串是以空字符正确终止的。

三、字符串分割函数

strtok 函数用于在C语言中分割字符串。它允许你将一个字符串拆分成多个子字符串,根据指定的分隔符进行分割。
下面将详细介绍 strtok 函数的用途、用法、示例以及注意事项。

3.1 strtok (String Tokenizer):

用途:

strtok 用于将字符串拆分成一系列的标记(tokens),这些标记由用户指定的分隔符来定义。

每次调用 strtok,它返回下一个标记,直到字符串结束或者再没有其他标记为止。

用法:

函数原型如下:

char *strtok(char *str, const char *delimiters);

参数 str:要分割的字符串,第一次调用时传入待分割的字符串,后续调用传入 NULL。

参数 delimiters:分隔符字符串,包含所有可能的分隔符。

返回值:返回下一个标记的指针,如果没有更多标记则返回 NULL。

示例:

#include <stdio.h>
#include <string.h>int main() {char str[] = "apple,orange,banana";const char delimiters[] = ",";// 第一次调用char *token = strtok(str, delimiters);while (token != NULL) {printf("Token: %s\n", token);// 后续调用,传入NULL表示继续使用同一字符串token = strtok(NULL, delimiters);}return 0;
}

结果:

Token: apple
Token: orange
Token: banana

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “apple,orange,banana”,以及一个包含分隔符 “,” 的字符数组 delimiters。

然后,通过第一次调用 strtok 函数,将字符串 str 按照分隔符 “,” 进行分割,并返回第一个分割后的子字符串的指针,并将该指针赋值给 token 变量。

接着,通过一个 while 循环,不断检查 token 是否为 NULL,如果不是,则表示仍有未处理的子字符串,依次输出每个子字符串,并通过后续调用 strtok(NULL, delimiters)

继续获取下一个分割后的子字符串,直到所有子字符串都被处理完毕。

最后,程序返回0,表示正常执行结束。

这段代码的作用是将字符串 “apple,orange,banana” 按照逗号进行分割,并输出每个分割后的子字符串。

输出结果为每个子字符串(apple、orange、banana)分别占一行。

注意事项:

strtok 在处理字符串时会修改原始字符串,将分隔符替换为 \0,因此需要谨慎使用,特别是当原始字符串是常量字符串时。

在多线程环境下,strtok 是不可重入的,因为它使用了静态变量来记录当前的解析位置。

如果字符串中有连续的分隔符,strtok 会将它们视为一个分隔符处理,因此可能返回空标记

四 总结:

本文介绍了C语言中的一些常见字符串函数,包括字符串搜索函数、字符串长度函数和字符串分割函数。

通过学习这些函数,我们可以在C语言中更加灵活和高效地处理字符串数据。

字符串搜索函数 strchr、strrchr 和 strstr 可以帮助我们在字符串中查找特定字符或子字符串的位置。

字符串长度函数 strlen 能够准确地计算字符串的长度,为字符串操作提供了基础。

字符串分割函数 strtok 则能够将字符串按照指定的分隔符进行分割,提取出其中的子字符串。

通过掌握这些字符串函数的使用方法,我们可以更加高效地编写C语言程序,并处理各种字符串操作需求。

这篇文章到这就结束啦

谢谢大家的阅读!

如果觉得这篇博客对你有用的话,别忘记三连哦。

我是甜美的江,让我们我们下次再见

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/257529.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2023-41892 漏洞复现

CVE-2023-41892 开题&#xff0c;是一个RCE Thanks for installing Craft CMS! You’re looking at the index.twig template file located in your templates/ folder. Once you’re ready to start building out your site’s front end, you can replace this with someth…

【Web】CVE-2021-31805 s2-062漏洞复现学习

目录 Struts2介绍 漏洞概况 OGNL与Struts2 简单原理 漏洞复现 正向rce 反弹shell payload分析 Struts2介绍 Struts 2 是一个流行的用于构建 Java Web 应用程序的开源 Web 应用程序框架。它是 Apache 软件基金会下的一个顶级项目&#xff0c;是 Struts 框架的升级版本。…

LabVIEW智能温度监控系统

LabVIEW智能温度监控系统 介绍了一个基于LabVIEW的智能温度监控系统&#xff0c;实现对工业环境中温度的实时监控与调控。通过集成传感器技术和LabVIEW软件平台&#xff0c;系统能够自动检测环境温度&#xff0c;及时响应温度变化&#xff0c;并通过图形用户界面(GUI)为用户提…

CFS三层靶机

参考博客&#xff1a; CFS三层内网靶场渗透记录【详细指南】 - FreeBuf网络安全行业门户 CFS三层靶机搭建及其内网渗透【附靶场环境】 | TeamsSix CFS三层网络环境靶场实战 - PANDA墨森 - 博客园 (cnblogs.com) CFS三层靶机实战--内网横向渗透 - 知乎 (zhihu.com) CFS靶机…

C语言——枚举类型

&#x1f4dd;前言&#xff1a; 在之前的文章中我们已经讲解了自定义类型中的结构体类型和联合体类型&#xff0c;现在我们再充分学习一下C语言中的枚举类型&#xff1a; 1&#xff0c;什么是枚举类型 2&#xff0c;枚举类型的定义和变量的声明 3&#xff0c;对变量进行赋值 &a…

【C++】类和对象(四)

前言&#xff1a;在类和对象中&#xff0c;我们走过了十分漫长的道路&#xff0c;今天我们将进一步学习类和对象&#xff0c;类和对象这块荆棘地很长&#xff0c;各位一起加油呀。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&a…

docker (一)-简介

1.什么是docker Docker 是一个开源的应用容器引擎&#xff0c;由于docker影响巨大&#xff0c;今天也用"Docker" 指代容器化技术。 2.docker的优势 一键部署&#xff0c;开箱即用 容器使用基于image镜像的部署模式&#xff0c;image中包含了运行应用程序所需的一…

auto关键字详讲

目录 1.问题思考 2.auto关键字介绍 3. 早期auto的缺陷&#xff1a; 4.什么叫自动存储器&#xff1f; 5. c标准auto关键字 5.1auto的使用细节 5.2 auto什么时候不能推导变量的类型呢&#xff1f; 5.3基于范围的for循环 5.3.1范围for的用法 5.3.2 范围for的使用条件 6.…

软考27-上午题-查找

一、基本概念 1-1、查找表&#xff1a; 同一类型的数据元素构成的集合。 对查找表常用的操作&#xff1a; 从查找表中查询某个特定的元素&#xff1b;检索某个特定的元素的各种属性。 通常只进行这两种操作的查找表&#xff1a;静态查找表 1-1-2、静态查找表&#xff1a; 顺…

快速搭建PyTorch环境:Miniconda一步到位

快速搭建PyTorch环境&#xff1a;Miniconda一步到位 &#x1f335;文章目录&#x1f335; &#x1f333;一、为何选择Miniconda搭建PyTorch环境&#xff1f;&#x1f333;&#x1f333;二、Miniconda安装指南&#xff1a;轻松上手&#x1f333;&#x1f333;三、PyTorch与Minic…

新年开始更新自己!八大出生缺陷惠民项目!漫漫回程路——“早”读

时间不等人呢&#xff01; 引言代码第一篇 人民日报 【夜读】新的一年&#xff0c;从更新自己开始第二篇&#xff08;跳&#xff09;人民日报 来啦 新闻早班车要闻社会政策 结尾 引言 天还是那个天 但是今天是一个不一样的日子 是我爷爷的忌日 所以按习俗 我们早早就开始拜 然后…

机器学习:Softmax介绍及代码实现

Softmax原理 Softmax函数用于将分类结果归一化&#xff0c;形成一个概率分布。作用类似于二分类中的Sigmoid函数。 对于一个k维向量z&#xff0c;我们想把这个结果转换为一个k个类别的概率分布p(z)。softmax可以用于实现上述结果&#xff0c;具体计算公式为&#xff1a; 对于…

Spring 用法学习总结(三)之 AOP

Spring学习 7 bean的生命周期8 AOP面向切面编程8.1 AOP相关术语8.2 AOP使用 7 bean的生命周期 bean的生命周期主要为bean实例化、bean属性赋值、bean初始化、销毁bean&#xff0c;其中在实例化和初始化前后都使用后置处理器方法&#xff0c;而InstantiationAwareBeanPostProce…

浅析Linux内核线程监测机制:Hung Task

文章目录 概述Hung Task配置Hung Task机制初始化Hung Task监测线程 相关参考 概述 Hung Task机制周期性地监测系统中处于TASK_UNINTERRUPTIBLE状态&#xff08;即D状态&#xff09;的进程&#xff0c;如果超过120s&#xff08;时间可配&#xff09;&#xff0c;进程状态还没有…

Ambiguous Medical Image Segmentation using Diffusion Models利用扩散模型分割模糊医学图像

摘要&#xff1a; 事实证明&#xff0c;在临床任务中&#xff0c;来自一组专家的集体见解总是优于个人的最佳诊断。对于医学图像分割任务&#xff0c;现有的基于人工智能的替代研究更多地侧重于开发能够模仿最佳个体的模型&#xff0c;而不是利用专家组的力量。 在本文中&…

实战案例:将已有的 MySQL8.0 单机架构变成主从复制架构

操作步骤 修改 master 主节点 的配置&#xff08; server-id log-bin &#xff09;master 主节点 完全备份&#xff08; mysqldump &#xff09;master 主节点 创建复制用户并授权master 主节点 将完全备份文件拷贝至从节点修改 slave 从节点 的配置&#xff08; server-id rea…

gorm day9(结)

gorm day9 实体关联gorm会话 实体关联 自动创建、更新 在创建、更新数据时&#xff0c;GORM会通过Upsert自动保存关联及其引用记录。 user : User{Name: "jinzhu",BillingAddress: Address{Address1: "Billing Address - Address 1"},Ship…

[数学建模] 计算差分方程的收敛点

[数学建模] 计算差分方程的收敛点 差分方程&#xff1a;差分方程描述的是在离散时间下系统状态之间的关系。与微分方程不同&#xff0c;差分方程处理的是在不同时间点上系统状态的变化。通常用来模拟动态系统&#xff0c;如在离散时间点上更新状态并预测未来状态。 收敛点&…

git stash 正确用法

目录 一、背景 二、使用 2.1 使用之前&#xff0c;先简单了解下 git stash 干了什么&#xff1a; 2.2 git stash 相关命令 2.3 使用流程 1. 执行 git stash 2. 查看刚才保存的工作进度 git stash list 3. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash) 4. 现在…

NLP快速入门

NLP入门 课程链接&#xff1a;https://www.bilibili.com/video/BV17K4y1W7yb/?p1&vd_source3f265bbf5a1f54aab2155d9cc1250219 参考文档链接1&#xff1a;NLP知识点&#xff1a;Tokenizer分词器 - 掘金 (juejin.cn) 一、分词 分词是什么&#xff1f; 每个字母都有对应…