首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C使用不带NULL的strtok()作为最后一个元素将字符串拆分成字符串数组

C语言中的strtok()函数用于将一个字符串拆分成多个子字符串,并将它们存储在一个字符串数组中。strtok()函数的原型如下:

代码语言:txt
复制
char *strtok(char *str, const char *delim);

其中,str是要拆分的字符串,delim是用于指定分隔符的字符串。strtok()函数会将str按照delim中指定的分隔符进行拆分,并返回拆分后的第一个子字符串的指针。之后,每次调用strtok(NULL, delim)都会返回下一个子字符串的指针,直到所有子字符串都被拆分完毕。

需要注意的是,strtok()函数会修改原始字符串,将分隔符替换为NULL字符。因此,在使用strtok()函数拆分字符串时,需要保证原始字符串是可修改的,或者使用一个可修改的副本。

strtok()函数的优势在于它可以方便地将一个字符串按照指定的分隔符拆分成多个子字符串,适用于处理需要按照特定规则解析的字符串数据。例如,可以将一个包含多个单词的句子拆分成单词数组,或者将一个包含多个数字的字符串拆分成数字数组。

在云计算领域中,strtok()函数可能用于解析一些配置文件或者日志文件中的字符串数据,提取出需要的信息。例如,可以将一个包含多个IP地址的字符串拆分成IP地址数组,用于配置网络设备或者进行网络监控。

腾讯云提供了丰富的云计算产品,其中与字符串处理相关的产品包括云函数(Serverless Cloud Function)和云原生数据库TDSQL。云函数是一种无服务器计算服务,可以通过编写函数代码来处理字符串拆分等操作。TDSQL是一种高性能、高可用的云原生数据库,可以存储和处理大量的字符串数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

极简shell制作

其实他们区别很明显,一种 字符串不带空格,一种字符串一个或多个空格,比如:   使用C语言scanf显然是行不通,在这里我推荐使用 fgets 接口,可以接收输入空格:   返回值表示输入字符串...这里有一个C语言接口可供大家使用 strtok:   第一个参数表示 指向要分割字符串,第一次调用时需要指定这个参数,以后调用要继续分割同一个字符串,就应该把参数 str 设置为 NULL。   ...SEP " "//表示空格    argv是一个指针数组,所以每一个元素都可以指向一段字符串,同时,我们希望argv数组下标能一一对应,所以需要一个键值作为索引: int i = 0; argv[i...++] = strtok(commandline, SEP);   但是,我们输入命令很可能不止一个空格,所以,我们需要使用循环控制子串切割,让argv数组一个元素都能对应到切割字符串: while...(argv[i++] = strtok(NULL, SEP));//注意这里用是=并非==   并且,这样一个好处就是 在argv数组最后是以 NULL结尾

13610

strtok字符串分割函数

函数原型:char *strtok(char *s, char *delim) 功能:作用于字符串s,以delim中字符为分界符,s切分成一个个子串;如果,s为空值NULL,则函数保存指针...返回值:分隔符匹配到一个子串 注意: 1.函数作用是分解字符串,所谓分解,即没有生成新串,只是在s所指向内容首次出现分界符位置,分界符修改成了’/0’,故第一次用strtok()返回第一个子串...l feel very happy"; //数组中存放为字符串指针,即每个元素都是指针,指针是字符串类型 //指针就是地址,所以数组中也可以存放字符串首地址 char* buf[4] = { NULL...,NULL }; int i = 0; //strtok一个参数第一次循环是buffer数组,第二次循环为NULL,隐形返回上次分割位置 while(buf[i++]=strtok(buf[i...buffer,NULL }; int i = 0; //strtok一个参数第一次循环是buffer数组,第二次循环为NULL,隐形返回上次分割位置 while(buf[i++]=strtok

1.4K10
  • strtok独到深刻讲解「建议收藏」

    交代一下实验环境是必要,winxp+vc6.0,一个极端平民化实验环境。本文中使用源代码大部分来自于网络,我稍加修改作为例证。...中字符为分界符,s切分成一个个子串;如果,s为空值NULL,则函数保存指针SAVE_PTR在下一次调用中将作为起始位置。...这一点,可以从strtok源代码得到证实。 6.不能向第一个参数传递字符串常量! 本文中所举例子都将源字符串保存为字符串数组变量。...若你字符串定义成字符串常量,可想而知,程序会因为strtok函数试图修改源字符串值,而抛出异常。...好了,本文详细介绍了使用strtok注意事项,(二)中我详细介绍strtok不能实现一些功能并引出strtok_r函数,最后介绍一下两个函数实现。

    67210

    C语言】字符和字符串函数(2)

    ,它作用就是返回后一个字符串在前一个字符串中第⼀次出现位置    并且字符串⽐较匹配不包含 \0 字符,以 \0 作为结束标志    接下来我们来看看strstr原型: const char...五、strtok函数使用    这也是一个新函数,它作用是什么呢?...,而第二个参数就是装有分隔符字符串首地址,strtok函数就可以根据我们给出分隔符字符串分隔开来    在分隔一次过后,它会返回这个被分隔下来字符串首地址,要注意一个点:在使用函数时,strtok...会修改数组内容,把分隔符改成\0,所以一般会创建源数据副本,然后用副本使用这个函数,并且调用一次这个函数只会分隔一个分隔符,如果有多个分隔符就要多次调用    并且第一次分隔传参时,第一个参数为要分隔字符串地址...⼀个参数不为 NULL ,函数找到str中第⼀个标记,strtok函数保存它在字符串位置 strtok函数第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存位置开始,查找下⼀个标记

    8810

    C语言----字符函数和字符串函数

    = '\0') { str++;//走到'\0'前面就停止了,那么到最后str值是最后一个元素地址 } return str - start;//因为一开始一个元素地址赋值给...strlen函数 //传过去一个数组名,字符串元素地址 printf("%zd\n", len); return 0; } 4.strcpy使用和模拟实现 功能:拷贝字符串...(注意:strtok会改变被操作符字符串,所以被strtok函数切分字符串一般都是临时拷贝内容并且可以修改) 4.strtok函数一个参数不为NULL,函数找到str中一个标记,就是第一个分隔符...,strtok函数保存他在字符串位置 5.strtok函数一个参数为NULL,函数将在同一个字符串中被保存位置,查找下一个标记。...//strtok(buf, sep)返回值是第一个切割符前面的字符串地址,并将其赋值给ret, //每次循环都会运行ret=strtok(NULL,sep),新获得返回值赋值给ret,

    10910

    C语言】字符串函数「超详细」

    当然如果是这样char str1[] = { 'a', 'b', 'c','\0'};就不会因为我们在最后一个元素添加了'\0'。 ...dest → 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后字符串。 src → 指向要追加字符串,该字符串不会覆盖目标字符串。...dest→指向目标数组,该数组包含了一个 C语言 字符串,且足够容纳追加后字符串,包括额外空字符。 src→要追加字符串。 n→追加最大字符串。...在第一次调用时,函数期望一个C字符串作为str参数,它一个字符被用作扫描标记起始位置。在随后调用中,该函数期望得到一个空指针,并使用最后一个标记结束后位置作为扫描起始位置。...找到最后一个令牌位置由函数保存在内部,以便下次调用时使用(为了避免数据竞争,不需要特定库实现)。 str→要截断C字符串。注意,这个字符串被分解成更小字符串(令牌)。

    1.3K20

    C字符串函数】——对C语言中有关字符串库函数实现及模拟

    其实在C语言中,字符串通常是放在 常量字符串 中或者 字符数组。...(注:strtok函数会改变被操作字符串,所以在使用strtok函数切分字符串一般都是临时拷贝内容并且可修改。)...2、strtok函数一个参数不为 NULL ,函数找到str中第一个标记,strtok函数保存它在字符串位置。...3、strtok函数一个参数为 NULL ,函数将在同一个字符串中被保存位置开始,查找下一个标记。 4、如果字符串中不存在更多标记,则返回 NULL 指针。..."; //由于strtok函数会改变原字符串内容,所以一般都会拷贝一个用来使用 strcpy(buf, arr); char* str = NULL; for (str=strtok(buf,

    1.1K40

    剖析C语言字符串函数

    前言: 这是一篇关于C语言字符串函数详解文章,里面不仅包含我们常见strlen、strcpy、strcat等,也包含不太常见strstr、strtok、strerror等,这篇文章不仅仅讲解他们使用方法...二、strcpy函数 功能: 拷贝字符串一个数组字符串拷贝到另一个数组中,并且必须将\0拷贝过去,到\0停止。 参数和返回值 第一个参数是目标字符串地址,第二个参数是源字符串地址。...0位置,然后\0替换为源字符串元素,接着开始追加。...strtok函数一个参数不为NULL,函数找到str中第一个标记,strtok函数保存它在字符串位置。...strtok函数一个参数为NULL,函数将在同一个字符串中被保存位置开始,查找下一个标记如果字符串中不存在更多标记,则返回NULL指针。

    7810

    strtok 函数

    delim — 包含分隔符 C 字符串。 返回值 该函数返回被分解一个字符串,如果没有可检索字符串,则返回一个空指针。 实例 下面的实例演示了 strtok() 函数用法。...一、函数简介 函数原型:char *strtok(char *s, char *delim) 功能:作用于字符串s,以delim中字符为分界符,s切分成一个个子串...返回值:分隔符匹配到一个子串 二、主要内容 1、函数作用是分解字符串,所谓分解,即没有生成新串,只是在s所指向内容首次出现分界符位置,分界符修改成了’/0’,故第一次用strtok()返回第一个子串...也就是说包含在delim中字符均可以作为分隔符,而非严格匹配。可以把delim理解为分隔符集合。这一点是非常重要~ 当然,我们在分解字符串时候,很少使用多个分隔符。...这一点,可以从strtok源代码得到证实。 6.不能向第一个参数传递字符串常量! 本文中所举例子都将源字符串保存为字符串数组变量。

    58320

    抽丝剥茧C语言(高阶)字符函数和字符串函数+练习

    模拟实现memmove 本篇结束 导语 C语言中对字符和字符串处理很是频繁,但是C语言本身是没有字符串类型字符串通常放在常量字符串中或者字符数组中。...(注:strtok函数会改变被操作字符串,所以在使用strtok函数切分字符串一般都是临时拷贝内容并且可修改。)...strtok函数一个参数不为 NULL ,函数找到str中第一个标记,strtok函数保存它在字符串位置。...strtok函数一个参数为 NULL ,函数将在同一个字符串中被保存位置开始,查找下一个标记。 如果字符串中不存在更多标记,则返回 NULL 指针。...库函数模拟实现 注意,以下均为参考代码 2.1 模拟实现strlen 首先要清楚,我们写这个函数,参数是数组元素地址,然后内部有一个循环,遇到\0会停下,有一个整型变量计数,最后返回那个整形计数变量值就好

    36700

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

    一、函数简介 函数原型:char *strtok(char *s, char *delim) 功能:作用于字符串s,以delim中字符为分界符,s切分成一个个子串...返回值:分隔符匹配到一个子串 二、主要内容 1、函数作用是分解字符串,所谓分解,即没有生成新串,只是在s所指向内容首次出现分界符位置,分界符修改成了’/0’,故第一次用strtok()返回第一个子串...也就是说包含在delim中字符均可以作为分隔符,而非严格匹配。可以把delim理解为分隔符集合。这一点是非常重要~ 当然,我们在分解字符串时候,很少使用多个分隔符。...这一点,可以从strtok源代码得到证实。 6.不能向第一个参数传递字符串常量! 本文中所举例子都将源字符串保存为字符串数组变量。...若你字符串定义成字符串常量,可想而知,程序会因为strtok函数试图修改源字符串值,而抛出异常。

    1.6K20

    C进阶】——详解10个C语言中常见字符串操作函数及其模拟实现

    本篇文章介绍函数需要包含头文件都是#include 前言 C语言中对字符和字符串处理很是频繁,但是C语言本身是没有字符串类型字符串通常放在 常量字符串 中或者 字符数组...因为函数strlen 求字符串中’\0’之前字符个数,但是上面的两个字符串C语言没有字符串类型,我们放到了字符数组中)中没有’\0’,所以strlen函数就会一直向后寻找,直至遇到’\0’,但数组后面的内存空间放是什么我们是不知道...,指针-指针得到是两个指针之间元素个数,那我们让一个指针指向首字符,另一个指针指向’\0’,后者减前者,得到元素个数不就是字符串长度吗?...ret = strtok(NULL, p); printf("%s\n", ret); return 0; 一旦在对 strtok 调用中找到 str 终止空字符,则对此函数所有后续调用(以空指针作为一个参数...也就是说,当strtok字符串处理完之后,如果我们再去以NULL作为一个参数去调用strtok,都将返回空指针NULL

    77310

    初识C语言·字符(串)函数

    1 字符分类函数 C语言有一类函数是专门做字符分类,即一个字符是属于什么类型。 这些函数使用都需要引用头文件ctype.h,现在这些函数一一列举。...根据Return Value我们可以知道,如果找到了就返回匹配成功那个首元素地址,没有成功就返回NULL,那你可能问了,成功找到的话是返回字符串元素地址吗?那打印不就是字符串2了吗?...第一种情况很简单,就一个if return完成了,我们侧重找得到和找不到,它比较就是从字符1数组每个元素挨个挨个比较,所以我们可以用字符1数组元素作为循环变量,如果遍历完字符1数组还没有满足条件,...10 strtok使用 先看一段记载,啊,好多,看不懂,好,那我介绍介绍。 返回值是指针,第一个参数是指向字符串指针,第二个参数是指针,指向是分隔符,分隔符是什么?...如果首元素是\0,循环就直接结束了,可以自行试试。 还有一个要注意点就是如果strtok一个参数是NULL的话,那么分割位置就是从上一次分割完位置继续遍历,代码如下。

    6910

    C语言字符串常用操作

    本文介绍 C语言中字符串相关知识,包括字符串定义、初始化、赋值、输入输出、比较、拼接、查找和替换等。 一、字符串定义和初始化 在 C语言中,字符串可以使用字符数组来定义和表示。...二、字符串赋值 在 C语言中,我们可以使用 strcpy 函数来一个字符串赋值给另一个字符串。...在 C语言中,我们可以使用 strrchr 函数来查找一个字符在字符串最后一次出现位置。...接着,使用 strrchr 函数查找字符'o'在字符串最后一次出现位置,并输出该位置。 在 C语言中,我们还可以使用 strtok 函数一个字符串按照指定分隔符分成若干个子串。...,并使用逗号作为分隔符。接着,使用 strtok 函数字符串按照逗号分割成若干个子串,并逐个输出这些子串。

    34720

    字符串与内存函数介绍+模拟实现

    0.前言 C语言中对字符和字符串处理很是繁琐,但是C语言本身是没有字符串类型字符串通常存放在常量字符串或者字符数组中。 字符串常量适用于那些对它不做修改字符串函数。...strtok函数找到str中一个标记,并将以'\0'结尾,返回一个指针指向这个标记指针(strtok函数会改变被操作字符串,所以在适用strtok函数切分字符串一个都是临时拷贝内容并且可修改...strtok函数一个参数不为NULL,函数找到str中第一个标记,strtok函数保存它在字符串位置。...strtok函数一个函数为NULL,将在同一个字符串中被保存位置开始,查找下一个标记。 如果字符串中不存在更多标记,则返回NULL指针。...依次类推还可以写成1+1+“llo”长度… 最后求到’\0’时,因为’\0’不能作为字符串长度所以+0。依照这个思路写成代码就是这样。

    7110

    C++实现字符串分割函数split()「建议收藏」

    目录 使用strtok()完成分割 使用strsep()完成分割 使用strtok_r()完成分割 实现字符串分割 ---- 前言 最近遇到了一个字符串分割问题,在C++标准库里面没有字符分割函数split...我想这个问题今后可能还会再遇见,所以使用C/C++中字符串分割方法完成相应功能。 需求:对一个字符串进行分割,然后分割后数据存起来,想用时候像用数组那样拿就行了。...= NULL,该调用被视为 strtok 对此特定字符串一个调用。该函数搜索中不包含一个字符 delim。...然后,该函数指针返回到token开头 如果str == NULL,则该调用将被视为对后续调用strtok:该函数从上次调用中保留位置继续。行为与先前存储指针作为str传递行为相同。...使用strtok_r()完成分割 strtok一个线程不安全函数,因为它使用了静态分配空间来存储被分割字符串位置,线程安全函数是strtok_r()。

    1.9K10

    因为一个函数strtok踩坑,我被老工程师无情嘲笑了(一)

    ID:技术让梦想更伟大 作者:李肖遥 在用C/C++实现字符串切割中,strtok函数经常用到,其主要作用是按照给定字符集分隔字符串,并返回各子字符串。...=NULL)//先以,为分界符,三个人信息分开 { buf=p[in];//调用strtok,先将子串先一一保存到字符串指针数组中, while((p[in]=strtok(buf...而在第一个循环结束后,函数第一个参数被设定为NULLstrtok将以this指针指向位置作为分解起始位置,此时this指针指向是'\0’,strtok一个空串无法切分,返回NULL,所以得到上面的结果...要想使用这个函数,找到linux下实现源码,复制到你程序中即,或者使用GNU C Library。 strtok_r函数是strtok函数可重入版本。...details/38420985 https://www.runoob.com/cprogramming/c-function-strtok.html 最后 这里先简单介绍下这几个函数基本使用以及一些优缺点等等

    8.9K31

    C字符串函数】字符串函数和内存操作函数模拟实现(进阶版)

    (内存拷贝) 7-2memmove(内存移动) 0.说在前面的话: 字符串函数基本使用要包含头文件:#include 字符串以’\0’作为结束标志, 字符串函数出现size_t就是...(ret = (*str1++) - (*str2++)) && (*str1));//妙不可言 return ret; } 3.长度受限字符串函数 下列带n字符串函数和不带n字符串使用规则和性质基本相同...(注: strtok函数会改变被操作字符串,所以在使用strtok函数切分字符串一般都是临时拷贝内容并且可修改。)...strtok函数一个参数不为 NULL ,函数找到str中第一个标记,strtok函数保存它在字符串位置。...strtok函数一个参数为 NULL ,函数将在同一个字符串中被保存位置开始,查找下一个标记。

    45730
    领券