提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
strtok和strtok_s函数功能是按分隔符分解字符串。
1.1 函数签名如下:
char * strtok ( char * str, const char * delimiters );
1.2 返回值:
该函数返回被分解的一个子字符串,如果没有可检索的字符串,则返回一个空指针。
1.3 使用方法:
1.4 分割字符串的原理
#include
- #include
- #include
-
- int main () {
- char str[80] = "This is - www.runoob.com - website";
- const char s[2] = "-";
- char *token;
-
- /* 获取第一个子字符串 */
- token = strtok(str, s);
-
- /* 继续获取其他的子字符串 */
- while( token != NULL ) {
- printf( "%s\n", token );
-
- token = strtok(NULL, s);
- }
-
- return 0;
- }
结果:
- This is
- www.runoob.com
- website
使用时strtok可能会报错,说strtok是不安全的函数,建议使用strtok_s:
error C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
strtok要记住上一个子字符串的位置,所以多线程使用时不安全。
上述报错可以通过设置_CRT_SECURE_NO_WARNINGS预处理定义来解决。
也可以替换成使用strtok_s来解决。
strtok_s的签名如下:
char* strtok_s(char* str, const char* delimiters, char** next_token);
strtok_s多了一个参数next_token,strtok_s把剩下的字符串写到next_token里,这样内部就不用记录子字符串等信息了,从而是线程安全的函数。
把上面的例子改成使用strtok_s,如下:
- #include
- #include
-
- int main()
- {
- char str[80] = "This is - www.runoob.com - website";
- const char s[2] = "-";
- char *token;
- char *next_token = NULL;
-
- /* 获取第一个子字符串 */
- token = strtok_s(str, s, &next_token);
-
- /* 继续获取其他的子字符串 */
- while (token != NULL) {
- printf("%s\n", token);
-
- token = strtok_s(NULL, s, &next_token);
- }
-
- return 0;
- }
结果:
- This is
- www.runoob.com
- website
http://www.cplusplus.com/reference/cstring/strtok/
https://www.runoob.com/cprogramming/c-function-strtok.html
该处使用的url网络请求的数据。
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。