C/C++字符串函数strtok()详解

article/2025/10/12 14:32:23

函数作用

找到与delimiter相同的地方,将其截断,并返回str

函数理解

第一个参数str是待切割字符串

第二个参数delimiter是分隔符字符串

返回值为char * ,一般默认返回str的地址

strtok() 的原理是将查找到与delimiter相同的部分字符串的首位变成 ' \ 0 ',然后返回str的首元素地址,完成”截断“行为。

示例

	char arr3[] = "abcdefghijklmnopqrst";char arr4[] = "ghi";printf("%s\n", arr3);char* a = strtok(arr3, arr4);printf("%s\n", a);
//输出结果
//abcdefghijklmnopqrst
//abcdef

使用 strtok()  之前                                                    使用 strtok() 之后

若在使用过一次 strtok() 函数之后再次使用strtok() 函数,可不加参数

仅限一次,多了就输出NULL

原因:第一次使用完毕之后 strtok() 函数会保存使用过的地址

示例

	char arr3[] = "abcdefghijklmnopqrst";char arr4[] = "ghi";printf("%s\n", arr3);char* a = strtok(arr3, arr4);printf("%s\n", a);char* b = strtok(NULL, arr4);printf("%s\n", b);char* c = strtok(NULL, arr4);printf("%s\n", c);//输出结果
//abcdefghijklmnopqrst
//abcdef
//jklmnopqrst
//(null)

若之前未使用过  strtok() 函数,不加第一个参数的话,编译器会崩溃的

	char* d = strtok(NULL, arr4);printf("%s\n", d);
//编译器崩溃了

http://chatgpt.dhexx.cn/article/pbrw3fHx.shtml

相关文章

strtok()函数的使用以及注意事项

一、函数的简介 函数原型:char *strtok(char *s, char *delim) 功能:作用于字符串s,以delim中的字符为分界符,将s切分成一个个子串;如果,s为空值NULL,则函数保存的指针SAVE_PTR在下一次调用中将…

strtok()函数

strtok() 将字符串拆分成tokens,tokens是被分隔符中的任何字符分隔的连续字符序列 char* strtok( char* str,const char* sep ); sep参数是个字符串,定义了用作分隔符的字符集合第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一…

strtok函数的基本使用

strtok函数的基本使用 一、功能及解释:strtok函数的简单运行strtok函数的基本使用 strtok的函数原型: char* strtok (char* str, const char* sep) 一、功能及解释: 1.包含在string.h头文件中 2.sep是个字符串,定义了用作分隔符…

关于函数strtok和strtok_r的使用要点和实现原理(一)

strtok函数的使用是一个老生常谈的问题了。该函数的作用很大,争议也很大。以下的表述可能与一些资料有区别或者说与你原来的认识有差异,因此,我尽量以实验为证。交代一下实验环境是必要的,winxpvc6.0,一个极端平民化的…

strtok函数

头文件 string.h 函数声明 char * strtok (char * str,const * sep) 返回值 分隔符之前字符串的首地址 用法 sep的参数是个字符串,定义了用作分隔符的字符集合str指定一个字符串,它包含了一个或多个sep中分隔符分割的…

C语言strtok()函数详解

函数原型 char *strtok(char *str, char const *sep);第一次调用strtok函数时,这个函数将忽略间距分隔符并返回指向在str字符串找到的第一个符号的指针,丢掉分隔符sep,添加NULL字符结尾(可以理解为用NULL替换了sep). 通过调用一系列的strtok函数,更多的…

数据库面试题——内连接与外连接、左连接与右连接的区别

内连接与外连接的区别: 1、连接结果不同 内连接的连接结果仅包含符合连接条件的行,参与连接的两个表都必须符合连接条件;而外连接的连接结果不仅包含了符合连接条件的行,同时还包括不符合自身条件的行,其中还包括左外连接、右外连…

sql中内连接和外连接的区别

对于两张表,外连接和内连接的区别在于: 内连接:只显示两表id匹配的左外连接:显示join左边的表的所有数据(不管两表是否匹配),对于不匹配的部分都用NULL显示右外连接:与左外连接相反…

左连接 ,右连接,内连接和全外连接的4者区别

基本定义: left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。 right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。 inner join (等…

数据库中的内连接、自然连接和外连接的区别

数据中的连接join分为内连接、自然连接、外连接,外连接又分为左外连接、右外连接、全外连接 当然,这些分类都是在连接的基础上,是从两个表中记录的笛卡尔积中选取满足连接的记录。笛卡尔积简单的说就是一个表里的记录要分别和另外一个表的记…

交叉连接、内连接和外连接的区别及使用方式

一、交叉连接、内连接、外连接的区别 交叉连接又叫’笛卡尔积’,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配。内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记…

内连接与外连接区别

内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。 外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。 左外连接:左边表数据行全部保留…

mysql 内连接、自然连接、外连接的区别

数据库中的内连接、自然连接、外连接 注意:mysql不支持全外连接,using和on的区别在于需要连接的两个表的属性名相同的时候使用using和on效果一样,而属性名不同的时候必须使用on 数据库中的连接join分为内连接、自然连接、外连接&#xff0c…

mysql 自然连接、内连接、外连接的区别

数据库中的连接join分为内连接、自然连接、外连接,外连接又分为左外连接、右外连接、全外连接(注意:mysql不支持全外连接) 首先,我们先来建两张表,第一张表命名为kemu,第二张表命名为score: 一、left join…

内连接与外连接的区别

有两个表A和表B。表A结构如下:Aid:int;标识种子,主键,自增IDAname:varchar数据情况,即用select * from A出来的记录情况如下图1所示:图1:A表数据表B结构如下:Bid&#xf…

内连接、左外连接与右外连接的区别及作用介绍

SQL语句当中比较难的部分就有今天要给朋友们分享的这个,inner join, left join 和 right join他们三个的作用以及区别是什么。 顺便也会把交叉连接一起分享了。 上面会分享一些基本的语法与使用,下方会详细介绍 1)交叉连接,又称笛…

图解数据库左连接、右连接、内连接、外连接、全连接的区别

数据库连表方式 内连接 :inner 、inner join外连接 :outer join 左外连接 :left outer join左连接 :left join右外连接 right outer join右连接: right join 全连接 full join 、union 准备 现在有2张表&#xff0c…

内链接和外连接的区别

内连接,也被称为自然连接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据,舍弃了不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配的所有行,所以内连接可能会造成信息的丢…

数据库的内连接和外连接的区别

内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。 外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。 左外连接:左边表数据行全部保留…

内连接和外连接区别

在之前,我对MSSQL中的内连接和外连接所得出的数据集不是很清楚。这几天重新温习了一下SQL的书本,现在的思路应该是很清楚了,现在把自己的理解发出来给大家温习下。希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助。(发这么…