目录
分隔函数 strtok
函数原型:
参数:
返回值:
代码演示:
函数解析:
注意事项:
分隔函数 strtok
函数原型:
char * strtok ( char * str, const char * sep);
参数:
- str—要被分解的字符串
- sep—用作分隔符的字符(可以是一个,也可以是集合)
返回值:
- 该函数返回被分解的第一个子字符串,若无可检索的字符串,则返回空指针
代码演示:
输出结果:
函数解析:
- strtok的参数中,sep表示的其实是一个分隔符的合集。
- strtok 会把字符串中的分隔符当作一个标记,同时会把标记变为\0
- 同时会返回,标记位置之前(或者是标志位置之前,前一个标记位置之后)的一个字符串。
- 同时strtok会改变原先的字符串,因为分隔符变成了\0
- 当把一个标记变成\0后,strtok会记录这个标记的位置,并且在这个标记往后,继续往下寻找是否有在sep记录中的标记,也因此,在第一次使用strtok时,第一个参数是需要分隔的字符串,当第二次还是针对该字符串使用时,strtok的第一个参数变成了NULL,其余往后的也同样是NULL
注意事项:
(1)sep
- 很多人在使用strtok的时候会放不开手脚,因为他们认为strtok的分隔符只有一个,但是sep是一个分隔符的集合,也就是说,我们设置一个字符串:hello@world.com 我们可以设置sep为 "@.",这样一个合集,当strtok在字符串中寻找标记时,是寻找字符串中是否有和sep内部字符相配符号。
(2)分隔符可不可以出现在第一个字符?
- 答案是:可以
当strtok分解的字符串首字符就是分隔符,那么strtok()会忽略首个分隔符,直接从第二个分隔符往下继续分解,例如:@hello@world.com 那么strtok()会忽略第一个@,还是以hello@world.com 的字符串形式继续分解。