字符串分割SplitString
C/C++中常用的字符串切割函数有strtok、strtok_s与strtok_r。
strtok函数
char* strtok(char* str, const char* delim);
分解字符串str为一组字符串,delim为分隔符。当strtok在參数str的字符串中发现參数delim中包含的切割字符时,则会将该字符改为'\0'字符。在第一次调用时,strtok必需给予參数str字符串,往后的调用则将參数str设置成NULL。每次调用成功则返回指向被切割出片段的指针。
strtok_s函数
char* strtok_s( char* strToken, const char* strDelimit, char** buf);
strtok_s是windows下的一个切割字符串安全函数,该函数会将剩余的字符串存储在buf变量中,而不是静态变量中,从而保证了安全性。
strtok_r函数
char* strtok_r(char* str, const char* delim, char** saveptr);
strtok_r函数是linux下切割字符串的安全函数,该函数会破坏待分解字符串的完整性,可使其将剩余的字符串保存在saveptr变量中,保证了安全性。
SplitString实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void SplitString (char* str, char* delim, char** result) {
char* ptr = NULL;
char* tmp = NULL;
ptr = strtok_r(str, delim, &tmp);
int count = 0;
const int maxLineLen = 100;
while (ptr != NULL) {
memcpy(result[count], ptr, maxLineLen);
ptr = strtok_r(NULL, delim, &tmp);
++count;
}
}
void SplitStringTest () {
const int maxLineNum = 20;
const int maxLineLen = 100;
char str1[] = "This is a test Program!";
// char str1[] = "Indulge not in heedlessness, have no intimacy with sensuous delights; for the earnest, meditative person obtains abundant bliss.";
char str2[] = " ";
char* result[maxLineNum] = {0};
for (int i = 0; i < maxLineNum; ++i) {
result[i] = (char*)malloc(sizeof(char) * maxLineLen);
if (result[i] != NULL) {
memset(result[i], 0, maxLineLen);
} else {
return;
}
}
SplitString(str1, str2, result);
for (int i = 0; i < maxLineNum; ++i) {
printf("%s\n", result[i]);
}
for (int i = 0; i < maxLineNum; ++i) {
if (result[i] != NULL) {
free(result[i]);
result[i] = NULL;
}
}
}
int main () {
SplitStringTest();
return 0;
}
个人主页:
字符串分割SplitString的更多相关文章
- SQL点滴3—一个简单的字符串分割函数
原文:SQL点滴3-一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,” 遇到其他情况只要稍加修改就好了 CREATE FUN ...
- C++中String类的字符串分割实现
最近笔试,经常遇到需要对字符串进行快速分割的情景,主要是在处理输入的时候,而以前练习算法题或笔试,很多时候不用花啥时间考虑测试用例输入的问题.可是C++标准库里面没有像java的String类中提供的 ...
- Delphi 自带的字符串分割函数split
下面介绍Delphi自带的字符串分割函数,根据你的需要来使用. 1.ExtractStrings function ExtractStrings(Separators, WhiteSpace: TSy ...
- C/C++.字符串分割
1.ZC:只测试使用了 自己改编的函数SplitStr_ZZ(...),其它的 未测试 #include <string> #include <vector> #include ...
- SQL Server 游标运用:鼠标轨迹字符串分割
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...
- Oracle 超长字符串分割劈分
Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大.... 下面,,,,直奔主题了: CREATE OR REPLACE FUNCTION splitstr(p_string IN clo ...
- php学习零散笔记—字符串分割、fetch函数和单双引号。
1 字符串分割——split()函数和preg_split()函数 split — 用正则表达式将字符串分割到数组中——貌似PHP5.3以上已不赞成使用 array split ( string $p ...
- 工作中用到的oracle字符串分割整理
oracle部分: 定义类型(用于字符串分割): create or replace TYPE "STR_SPLIT" IS TABLE OF VARCHAR2 (4000); 字 ...
- Python 字符串分割的方法
在平时工作的时候,发现对于字符串分割的方法用的比较多,下面对分割字符串方法进行总结一下:第一种:split()函数split()函数应该说是分割字符串使用最多的函数用法:str.split('分割符' ...
随机推荐
- [转帖]流言终结者 —— “SQL Server 是Sybase的产品而不是微软的”
流言终结者 —— “SQL Server 是Sybase的产品而不是微软的” https://www.cnblogs.com/xxxtech/archive/2011/12/30/2307859.ht ...
- # 匈牙利算法(二分图最大匹配)- hdu 过山车
匈牙利算法(二分图最大匹配)- hdu 过山车 Hdu 2063 二分图:图中的点可以分成两组U,V,所有边都是连接U,V中的顶点.等价定义是:含奇数条边的图. 匹配:一个匹配是一个边的集合,其中任意 ...
- C++练习 | 单链表的创建与输出(结构体格式)
#include <iostream> #include <stdio.h> using namespace std; #define OK 1 #define ERROR 0 ...
- Thinkphp6框架学习:($this->error()undefined)Call to undefined method app\index\controller\Admin::error()
最近在使用Thinkphp6框架的时候,想做一个初始化来验证登录状态. 当没有Session::get(‘adminUid’)的时候就应该跳转到admin\adminLogin的方法中,和以前Tp5的 ...
- Git复习(四)之解决冲突
解决冲突 合并分支往往也不是一帆风顺的 假设:我们从master创建了一个新的分支feature1更改了最后一行提交,我们切换到master分支也更改了最后一行提交,现在,master分支和featu ...
- 笔记本电脑重装win7/win10系统教程
由于笔记本第一次重装系统会出现系统装不上,还有出现找不到有效硬盘分区,等等问题,然后这篇文章主要讲解BIOS设置的方法,用此BIOS设置,电脑用原本安装系统的方式,能有效地解决以上问题,这有两种方法解 ...
- k8s自签TLS证书
自签TLS证书 TLS证书用于进行通信使用,k8s组件需要的证书有: 第一步:安装证书生成工具cfssl 在这之前需要先建立一个目录来存放安装的工具mkdir ssl,后面将安装的工具移动到各自的目录 ...
- hadoop离线数据存储和挖掘架构
前序: 当你把你知道的东西,写下来,让人看明白是一种境界:当你能把自己写下来的东西给人讲明白,又是另一种境界.在这个过程中,我们都需要历练. 基于hadoop集群下海量离线数据存储和挖掘分析架构: 架 ...
- npm操作命令
查看所有高级的npm moudles npm list --depth= 查看所有全局安装的模块 npm list --depth= -global 查找npm全局安装模块路径 npm config ...
- css简单动画(transition属性)
一.对transition属性的认识 1.transition 属性是一个简写属性,可用于设置四个过渡属性:transition-property 过渡效果的 CSS 属性的名称(height ...