#include <stdio.h>
#include <stdlib.h>
#include <string.h> /* 字符串切割函数 */ /*
知识补充:
1. 函数原型:
char *strtok(char *str, const char *delim);
char *strsep(char **stringp, const char *delim); 2. 功能:
strtok和strsep两个函数的功能都是用来分解字符串为一组字符串。str为要分解的字符串,delim为分隔符字符串。 3. 参数说明:
str(stringp)要求不可以是 const char *,因为 strtok 或者 strsep 都会修改 str 的值(修改指针的值)
delim 可以多个字符的集合,strtok(strsep)会按单个字符切割子串 4. 返回值:
从str开头开始的第一个子串,当没有分割的子串时返回NULL。 5. 相同点:
两者都会改变源字符串,想要避免,可以使用strdupa(由allocate函数实现)或strdup(由malloc函数实现)。 6. 不同点:
a. strtok函数第一次调用时会把s字符串中所有在delim中出现的字符替换为NULL。然后通过依次调用strtok(NULL, delim)得到各部分子串。
b. strsep函数第一次调用时会把s字符串中所有在delim中出现的字符替换为'\0'。然后通过依次调用strtok(stringp, delim)得到各部分子串。
c. strsep在切割字符串的过程中,可能多次返回空字符串('\0'),但是 strtok 只会在结束时才返回 NULL
d. strtok 内部记录上次调用字符串的位置,所以不支持多线程,可重入版本为strtok_r
e. strsep支持多线程 */ void test()
{
char p[] = "hello this world . the world is good .";
char *pcIndex = p;
char *token = NULL; while (token = strsep(&buf, ". "), token)
{
//*token 可能会等于 '\0'
if (*token)
{
printf("--[%s]---[%p]---buf[%p]--\n", token, token, buf);
}
} } int main()
{
test();
return ;
}

最新文章

  1. Sharepoint 2010 splist url query for date range
  2. MIME类型(JSP中)
  3. java实验三20135104
  4. jQuery带遮罩层弹窗实现(附源码)
  5. unity, OnTriggerStay/OnTriggerStay2D not called every fixedUpdate frame
  6. Java核心技术卷二部分笔记
  7. 开通GitHub以及使用笔记
  8. SharePoint 2010 修改默认列表样式
  9. ecshop 微信支付插件
  10. Android 获取截图 并将其保存到本地sd在卡路径
  11. Java C# .net 和 C C++ 跨平台的区别
  12. download下载excel模板的代码
  13. java后端学习流程
  14. 将摄像头的读入的人像放入背景视频中_with_OpenCV_in_Python
  15. 【转】Mac端包管理工具——Homebrew简介及安装
  16. 机器学习用Pandas实现数据库的读取
  17. vue v-cloak知识点
  18. Java-HttpURLConnection详细说明与实例
  19. SQL中的 if 结构和循环(while)结构
  20. node inspector

热门文章

  1. 04-JavaScript的操作
  2. 云计算与大数据实验:Hbase shell基本命令操作
  3. Python,for循环小例子--99乘法表
  4. 个人第5次作业-Alpha2项目的测试
  5. 转一篇关于epoll模型的博文
  6. python_常用断言assert
  7. 【项目管理工具】&mdash;&mdash; Microsoft Office Project 介绍
  8. Linux——安装并配置Kafka
  9. wordpress非管理员看不到数据需有manage_options权限
  10. C#编写简单的聊天程序(转)