C语言 字符串切割
#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 ;
}
C语言 字符串切割的更多相关文章
- C语言字符串操作总结大全(超详细)
本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat( ...
- C语言字符串拷贝
C语言字符串拷贝利用指针操作,要清楚知道指针的指向 代码如下: #include <stdio.h> #include <assert.h> #include <stri ...
- C语言字符串长度(转)
C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项. C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度. 在程序里,一般会用strlen()函数或sizeof ...
- C语言字符串操作常用库函数
C语言字符串操作常用库函数 *********************************************************************************** 函数 ...
- c语言字符串操作大全
C语言字符串操作函数 函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #incl ...
- 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...
- C 语言字符串连接的 3种方式
C 语言字符串连接的 3种方式 #include<stdio.h> #include<stdlib.h> #include<string.h> char *join ...
- C语言字符串声明
重新学习C语言字符串声明char *a="nihao";char a[]="nihao";什么区别?前者定义的是指针,并且指向字符串常量“nihao”,后者是字 ...
- oracle 字符串切割成结果集方法
oracle字符串切割几种方式 方法一: SELECT COLUMN_VALUE FROM TABLE(SYS.ODCIVARCHAR2LIST('1','2','3','4','5')); 方法二: ...
随机推荐
- cookie删除失效问题
在一个yii2的项目中使用了cookie,设置.获取都没有问题,但是在删除时候失败了. 要想删除cookie成功,只是设置cookie值为null,或设置时间为过期时间是不行的,还需要设置path,一 ...
- 8 个 Python 实用脚本,赶紧收藏备用!
脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作. 例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么.完成这 ...
- netstat -an unix socket 会阻塞吗
[lyd@localhost ~]$ netstat -an | grep "SOFO"unix 2 [ ACC ] SEQPACKET LISTENING 86308 @*MY- ...
- 案例实战之如何写一个webpack loader
通过以下几个实例掌握webpack loader的写法 1.写一个多语言替换的loader 在index.js在页面上插入了一个{{title}}文本,我们需要在打包的时候将其替换成对应的多语言 fu ...
- Docker 部署 vue 项目
Docker 部署 vue 项目 Docker 作为轻量级虚拟化技术,拥有持续集成.版本控制.可移植性.隔离性和安全性等优势.本文使用Docker来部署一个vue的前端应用,并尽可能详尽的介绍了实现思 ...
- HBase数据结构
1 RowKey 与nosql数据库们一样,RowKey是用来检索记录的主键.访问HBASE table中的行,只有三种方式: 1.通过单个RowKey访问 2.通过RowKey的range(正则) ...
- msdtc不可用
在使用“经销商园地 网上订单处理程序”等程序时,如果程序报:服务器×××上的MSDTC不可用”,可以按照以下方法进行解决: 在windows控制面版-->管理工具-->服务-->Di ...
- LightOJ - 1322 - Worst Case Trie(DP)
链接: https://vjudge.net/problem/LightOJ-1322 题意: In Computer Science Trie or prefix tree is a data st ...
- POJ P2251 Dungeon Master 题解
深搜,只不过是三维的. #include<iostream> #include<cstring> #include<cstdio> #include<algo ...
- hibernate实现增删改查
1.需要先创建学生实体: package pers.zhb.domain; public class Student { private int studentno; private String s ...