【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.mzph.cn/news/682262.shtml

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

相关文章

幻兽帕鲁Palworld服务器设置参数(汉化)

创建幻兽帕鲁服务器配置参数说明&#xff0c;Palworld服务器配置参数与解释&#xff0c;阿腾云atengyun.com分享&#xff1a; 自建幻兽帕鲁服务器教程&#xff1a; 阿里云教程 https://t.aliyun.com/U/bLynLC腾讯云教程 https://curl.qcloud.com/oRMoSucP 幻兽帕鲁服务器 幻…

如何使用idea连通服务器上的Redis(详细版本)

这里我使用的是阿里云的服务器 打开阿里云的安全组&#xff0c;设置端口为6379 在redis.conf文件中&#xff0c;注释bind 127.0.0.1 将protected-mode设置为no&#xff0c;即关闭保护模式 更改服务器中的防火墙&#xff0c;放行6379端口 # 放行端口 firewall-cmd --zo…

Nacos 的配置管理和配置热更新

一、配置管理的必要性 1. 存在问题 微服务重复配置过多维护成本高&#xff1a;将各个微服务的配置都写到配置管理服务中&#xff0c;单个微服务不去编写配置&#xff0c;而是到配置管理服务中读取配置&#xff0c;实现配置共享&#xff0c;便于修改和维护 业务配置经常变动&a…

【AI视野·今日CV 计算机视觉论文速览 第299期】Mon, 29 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 29 Jan 2024 Totally 55 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Annotated Hands for Generative Models Authors Yue Yang, Atith N Gandhi, Greg TurkGAN 和扩散模型等生成模型已经展示了…

C++:priority_queue模拟实现

C&#xff1a;priority_queue模拟实现 什么是priority_queue模拟实现向上调整算法向下调整算法插入与删除 仿函数 什么是priority_queue priority_queue称为优先级队列。优先级队列是一种特殊的队列&#xff0c;其中每个元素都有一个相关的优先级。元素的优先级决定了它们在队…

Python数学建模之回归分析

1.基本概念及应用场景 回归分析是一种预测性的建模技术&#xff0c;数学建模中常用回归分析技术寻找存在相关关系的变量间的数学表达式&#xff0c;并进行统计推断。例如&#xff0c;司机的鲁莽驾驶与交通事故的数量之间的关系就可以用回归分析研究。回归分析根据变量的…

论文阅读:GamutMLP A Lightweight MLP for Color Loss Recovery

这篇文章是关于色彩恢复的一项工作&#xff0c;发表在 CVPR2023&#xff0c;其中之一的作者是 Michael S. Brown&#xff0c;这个老师是加拿大 York 大学的&#xff0c;也是 ISP 领域的大牛&#xff0c;现在好像也在三星研究院担任兼职&#xff0c;这个老师做了很多这种类似的工…

系统架构25 - 软件架构设计(4)

软件架构复用 软件产品线定义分类原因复用对象及形式基本过程 软件产品线 软件产品线是指一组软件密集型系统&#xff0c;它们共享一个公共的、可管理的特性集&#xff0c;满足某个特定市场或任务的具体需要&#xff0c;是以规定的方式用公共的核心资产集成开发出来的。即围绕…

九、OpenCV自带colormap

项目功能实现&#xff1a;每隔1500ms轮流自动播放不同风格图像显示&#xff0c;按下Esc键退出 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 colormap.h #pragma once #include<opencv2/opencv.hpp> using namespace cv;class ColorMap { public:vo…

Mybatis开发辅助神器p6spy

Mybatis什么都好&#xff0c;就是不能打印完整的SQL语句&#xff0c;虽然可以根据数据来判断一二&#xff0c;但始终不能直观的看到实际语句。这对我们想用完整语句去数据库里执行&#xff0c;带来了不便。 怎么说呢不管用其他什么方式来实现完整语句&#xff0c;都始终不是Myb…

《Linux 简易速速上手小册》第6章: 磁盘管理与文件系统(2024 最新版)

文章目录 6.1 磁盘分区与格式化6.1.1 重点基础知识6.1.2 重点案例&#xff1a;为新硬盘配置分区和文件系统6.1.3 拓展案例 1&#xff1a;创建交换分区6.1.4 拓展案例 2&#xff1a;使用 LVM 管理分区 6.2 挂载与卸载文件系统6.2.1 重点基础知识6.2.2 重点案例&#xff1a;挂载新…

近十年金融资产收益率

通过掌握大类资产的历年收益率数据&#xff0c;做基于数据的投资&#xff0c;提高胜率和收益率。 下面是同花顺梳理的2014至2023大类金融资产收益率&#xff1a; 基于这个数据&#xff0c;我们再统计两项指标&#xff1a; 1. 每种资产在近十年的投资胜率&#xff08;收益率为…

牛客2024年情人节比赛 娱乐报告

前言 挺欢乐的比赛&#xff0c;有趣 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 第二杯半价 思路: 模拟 分奇偶进行讨论 t int(input())for _ in range(t):n, x list(map(int, input().split()))if n % 2 1:print (n//2 * (x (x 1) // 2) x)else:pr…

RIDERS: Radar-Infrared Depth Estimation for Robust Sensing

RIDERS: 恶劣天气及环境下鲁棒的密集深度估计 论文链接&#xff1a;https://arxiv.org/pdf/2402.02067.pdf 作者单位&#xff1a;浙江大学, 慕尼黑工业大学 代码链接&#xff1a;https://github.com/MMOCKING/RIDERS 1. 摘要&#xff08;Abstract&#xff09; 恶劣的天气条件, …

python 自我检测题--part 1

1. Which way among them is used to create an event loop ? Window.mainloop() 2. Suppose we have a set a {10,9,8,7}, and we execute a.remove(14) what will happen ? Key error is raised. The remove() method removes the specified element from the set. Th…

imazing怎么连接苹果手机

imazing怎么连接苹果手机 要连接苹果手机&#xff0c;您可以选择使用数据线或无线网络&#xff08;Wi-Fi&#xff09;两种方式。以下是具体的步骤&#xff1a; 使用数据线连接&#xff1a; 准备工具&#xff1a;确保您的Mac或Windows电脑已经安装了iMazing软件&#xff0c;并且…

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图&#xff1a; linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…

顾问聘请协议(模板)

甲方&#xff1a;________________   乙方&#xff1a;________________ 诚信合作是一切事业发展的基础&#xff0c;外部智力是企业进步的源泉。甲、乙双方经友好协商达成本协议&#xff0c;甲方愿意聘请乙方为特邀管理顾问&#xff0c;乙方愿按本协议内容与甲方合作。 一、合…

水果FL Studio21.2最新中文版功能特点介绍

FL Studio 21的特点和优势包括&#xff1a; 丰富的主题换肤&#xff1a;用户可以通过调整色调、饱和度、亮度、文本、仪表和步进序列器的颜色&#xff0c;来个性化定制FL Studio 21的外观&#xff0c;使其更符合个人审美或工作风格。更快的音频编辑&#xff1a;FL Studio 21集…

奇异递归模板模式应用1-对象计数

需求&#xff1a;有时遇到某些类特征相似而又没有共同的父类&#xff0c;希望能够知道这些类的创建数量之和。 思路&#xff1a;将这些类继承自同一个计数类&#xff0c;共享计数变量s_createCount信息&#xff0c;实现如下&#xff1a; class Counter { public:Counter() {s_…