Strtok函数切割字符串(附代码演示)

news2024/10/5 20:28:09

目录

1.认识Strtok函数

2.Strtok函数使用认识

3.Strtok使用代码示例


1.认识Strtok函数

 C语言中的strtok函数是用来将字符串分割成若干个子串的函数。它的原型如上图所示

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

函数参数str为要被分割的字符串,参数delimiters为分割符,即按照哪个字符或者字符串分割。该函数返回一个指向被分割后的第一个子串的指针(不为\0)。在后续调用时,第一个参数应该传入NULL,表示继续分割原来的字符串。

2.Strtok函数使用认识

  • delimiters参数是个字符串,定义了用作分隔符的字符集合
  • 第一个参数指定一个字符串,它包含了0个或者多个由delimiters字符串中一个或者多个分隔符分割的标记
  • strtok函数找到str中的一个标记,并将其用 \0 结尾,然后返回一个非 ‘\0’ 字符的指针。(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)
  • 如果strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。(有记忆功能)
  • 如果strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记
  • 如果字符串中不存在更多的标记,则返回 NULL 指针

3.Strtok使用代码示例

你可以先看以下代码来理解strtok如何工作的:

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = "sokdojo@qq.com";
	char buf[200] = { 0 };
	//拷贝字符串到buf数组中
	strcpy(buf, arr);
	char* gather = "@.";
	//strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。
	// 
	//(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改)
	char* ret = strtok(buf, gather);
	printf("%s\n", ret);

	//strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记
	ret = strtok(NULL, gather);
	printf("%s\n", ret);	

	ret = strtok(NULL, gather);
	printf("%s\n", ret);
	return 0;
}

 

 

但在真实情况下我们并不会这样使用这个函数这样写重复代码

实际使用如下:

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = "sokdojo@qq.com";
	char buf[200] = { 0 };
	//拷贝字符串到buf数组中
	strcpy(buf, arr);
	char* gather = "@.";

	char* s = NULL;
    //strtok函数有记忆功能
	for (s = strtok(buf, gather); s != NULL; s = strtok(NULL, gather))
	{
		printf("%s\n", s);
	}

	return 0;
}

 


 学习时记录下更多库函数的使用,方便让自己和大家在以后回过头对知识回顾,感谢大家的支持。希望一键三联。

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

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

相关文章

95 # express 二级路由的实现

上一节实现了兼容老的路由写法&#xff0c;这一节来实现二级路由 二级路由实现核心&#xff1a; 进入中间件后&#xff0c;让对应的路由系统去进行匹配操作中间件进去匹配需要删除 path&#xff0c;存起来出去时在加上 示意图&#xff1a; 代码实现如下&#xff1a; rout…

护理不良事件成因分析及预防措施,你知道哪些

不良事件上报管理系统源码 护理不良事件主要成因分析 1&#xff0e;查对制度不严&#xff1a;因不认真执行各种查对制度&#xff0c;而在实际护理工作中出现的不良事件仍占较高比例。具体表现在用药查对不严&#xff0c;只喊床号&#xff0c;不喊姓名&#xff0c;致使给患者输错…

【算法练习Day5】有效的字母异位词 两个数组的交集快乐数两数之和

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 有效的字母异位词两个数…

基于springboot+vue的青年公寓服务平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

K8SYaml文件详解及编写示例

文章目录 一.Yaml文件详解1.Yaml文件格式2.YAML 语法格式 二.Yaml文件编写及相关概念1.查看 api 资源版本标签2.yaml编写案例&#xff08;1&#xff09;相关标签介绍&#xff08;2&#xff09;Deployment类型编写nginx服务&#xff08;3&#xff09;k8s集群中的port介绍&#x…

Unity 内存性能分析器 (Memory Profiler)

一、 安装 安装有两种方式一&#xff1a; add package : com.unity.memoryprofiler方式二&#xff1a; From Packages : Unity Registry 搜索 Memory Profiler 二、 使用 打开&#xff1a;Windows - > Analysis - > Memory Profiler 打开MemoryProfiler界面&#xff0…

深入学习JVM(Java虚拟机)

目录 一.JDK、JRE、JVM的关系 1.1JDK(Java SE Development Kit) 1.2JRE( Java Runtime Environment) 1.3JVM(Java Virtual Machine) 1.4JDK、JRE、JVM的区别与联系 二.Class的生命周期 2.1加载 2.1.1 类加载器 2.1.2类加载机制 2.1.3双亲委派 2.2链接 2.2.1验证 2…

antd-vue 级联选择器默认值不生效解决方案

一、业务场景&#xff1a; 最近在使用Vue框架和antd-vue组件库的时候&#xff0c;发现在做编辑回显时** 级联选择器** 组件的默认值不生效。为了大家后面遇到和我一样的问题&#xff0c;给大家分享一下 二、bug信息&#xff1a; 三、问题原因&#xff1a; 确定不了唯一的值&a…

GEE:根据影像最小值和最大值自适应可视化参数设置

作者:CSDN @ _养乐多_ 本文将介绍根据影像最小值和最大值,自适应的设置影像可视化参数设置。 文章目录 一、核心函数二、代码示例三、代码链接一、核心函数 //计算影像的最小值和最大值,为了可视化 var imageMin = (image.reduceRegion({reduc

使用CRM管理销售渠道的 5 个重要优势

销售渠道的管理是创造积极客户体验的关键因素&#xff0c;对企业来说非常重要。大多数情况下&#xff0c;客户关系管理&#xff08;CRM&#xff09;系统可用于高效的销售渠道管理。那么&#xff0c;利用CRM系统管理销售渠道有哪些优势呢&#xff1f; 1) 有效的线索管理 销售渠…

CSS实现鼠标悬停图片上升显示

文章目录 前言一、实现效果二、实现思路 前言 当我们想在图片上面放置一些文字内容时&#xff0c;发现不管怎么放置&#xff0c;要么就是图片影响到文字的观感&#xff0c;要么就是文字挡住图片的细节&#xff0c;那么怎么可以既看到图片的细节又可以看到对图片的文字描述呢&a…

基于R语言分位数回归丨线性回归假设与分位数函数、线性分位数回归 、贝叶斯分位数回归、超越线性分位数回归等

目录 专题一 线性回归假设与分位数函数讲解 专题二 线性分位数回归 【代码实践】 专题三 贝叶斯分位数回归【代码实践】 专题四 超越线性分位数回归&#xff08;一&#xff09;【代码实践】 专题五 超越线性分位数回归&#xff08;二&#xff09;【代码实践】 更多应用 回…

怎样的外发文件管理办法 能够避免数据外发泄露?

在日常办公中&#xff0c;重要文件保密管理可谓“老生常谈”。但我们往往容易忽视&#xff0c;文件保密管理并非个体所能独立完成&#xff0c;在整个文件运转过程中&#xff0c;存在多名经手人&#xff0c;一人发生疏忽&#xff0c;则整个安全屏障都会被打破。 因此&#xff0c…

膝盖前交叉韧带断裂

等级、治愈&#xff08;几乎不可能&#xff0c;除非康复阶段做得非常到位。手术后可恢复到90%&#xff09;&#xff0c;饮食&#xff0c;康复训练&#xff08;完全康复&#xff09;、心理作用 赔偿&#xff1a;工商&#xff08;分出两份&#xff09;&#xff0c;伤残证&#x…

Spring Boot 如何实现单点登录(SSO)

当今的应用程序越来越多地采用了微服务架构&#xff0c;这就引出了一个重要的问题&#xff1a;如何实现单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;来确保用户在多个微服务之间无需重复登录。Spring Boot是一个流行的Java框架&#xff0c;它提供了一些…

旅行季《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著作想象和世界一样宽广

旅行季《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著作想象和世界一样宽广

AB试验(四)基于规范流程的一个案例分析

AB试验&#xff08;四&#xff09;基于规范流程的一个案例分析 确定目标和假设 业务场景&#xff1a;某音乐APP&#xff0c;通过历史数据发现一些便利功能往往有着较高的留存和续订。但是这些便利功能的使用率并不高。调研发现&#xff0c;由于APP崇尚简洁设计&#xff0c;因…

排序算法二 归并排序和快速排序

目录 归并排序 快速排序 1 挖坑法​编辑 2 Hoare法 快排的优化 快排的非递归方法 七大排序算法复杂度及稳定性分析 归并排序 归并排序是建立在归并操作上的一种有效的排序算法,将以有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,在使子序列段间有序.若将两…

李沐_动手学深度学习_19_卷积层

一、遇到的磕磕绊绊&#xff1a; 1.一维数组 和 二维矩阵数据之间的区别&#xff1a; 二、用到的一些代码&#xff1a; #备注&#xff0c;矩阵点乘 就是 A*B import torch from d2l import torch as d2l #这个库是李沐自己写的&#xff0c;我去 from torch import nndef co…

【React】JSX语法

目录 一、前言二、JSX介绍三、JSX原理1、DOM结构示例2、HTML的JSX结构示例3、编译之后的代码 四、为什么使用JSX1、JSX的特点2、JSX的书写规范 五、JSX的使用1、嵌入JS表达式2、条件渲染3、列表渲染①、arr.map() 六、组件1、类组件①、实例化组件 2、函数组件3、组件样式①、行…