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