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;
}

个人主页:

www.codeapes.cn

字符串分割SplitString的更多相关文章

  1. SQL点滴3—一个简单的字符串分割函数

    原文:SQL点滴3-一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,”  遇到其他情况只要稍加修改就好了 CREATE FUN ...

  2. C++中String类的字符串分割实现

    最近笔试,经常遇到需要对字符串进行快速分割的情景,主要是在处理输入的时候,而以前练习算法题或笔试,很多时候不用花啥时间考虑测试用例输入的问题.可是C++标准库里面没有像java的String类中提供的 ...

  3. Delphi 自带的字符串分割函数split

    下面介绍Delphi自带的字符串分割函数,根据你的需要来使用. 1.ExtractStrings function ExtractStrings(Separators, WhiteSpace: TSy ...

  4. C/C++.字符串分割

    1.ZC:只测试使用了 自己改编的函数SplitStr_ZZ(...),其它的 未测试 #include <string> #include <vector> #include ...

  5. SQL Server 游标运用:鼠标轨迹字符串分割

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...

  6. Oracle 超长字符串分割劈分

    Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大.... 下面,,,,直奔主题了: CREATE OR REPLACE FUNCTION splitstr(p_string IN clo ...

  7. php学习零散笔记—字符串分割、fetch函数和单双引号。

    1 字符串分割——split()函数和preg_split()函数 split — 用正则表达式将字符串分割到数组中——貌似PHP5.3以上已不赞成使用 array split ( string $p ...

  8. 工作中用到的oracle字符串分割整理

    oracle部分: 定义类型(用于字符串分割): create or replace TYPE "STR_SPLIT" IS TABLE OF VARCHAR2 (4000); 字 ...

  9. Python 字符串分割的方法

    在平时工作的时候,发现对于字符串分割的方法用的比较多,下面对分割字符串方法进行总结一下:第一种:split()函数split()函数应该说是分割字符串使用最多的函数用法:str.split('分割符' ...

随机推荐

  1. LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询

    简介 使用线程的主要原因:应用程序中一些操作需要消耗一定的时间,比如对文件.数据库.网络的访问等等,而我们不希望用户一直等待到操作结束,而是在此同时可以进行一些其他的操作.  这就可以使用线程来实现. ...

  2. Tensor Flow基础(2.0)

    写在前面:此篇纯属自我记录,参考意义不大. 数据类型 数值型 标量Scalar:1.0,2.3等,shape为0->[] a = 1.2 向量Vector:[1.0],[2.3,5.4]等,sh ...

  3. JavaRMI框架

     RMI(即Remote Method Invoke 远程方法调用).在Java中,只要一个类extends了java.rmi.Remote接口,即可成为存在于服务器端的远程对象,供客户端访问并提供一 ...

  4. js、jQuery各种高度

    height.js ```$(document).height(); //整个网页的高度 $(window).height(); //浏览器可视窗口的高度 $(window).scrollTop(); ...

  5. Codeforces 1196F. K-th Path

    传送门 发现到 $K$ 不大,考虑有什么和 $K$ 有关的结论 发现答案似乎只会经过前 $K$ 小的边,如果边权第 $K$ 小的边有多条那么可以任意取 证明挺显然的吧,首先如果走了边权排名大于 $K$ ...

  6. JavaSE--jdbc编程

    JDBC全称为:Java Data Base Connectivity (java数据库连接),可以为多种数据库提供统一的访问.JDBC是sun开发的一套数据库访问编程接口,是一种SQL级的API.它 ...

  7. 使用xpath爬取猫眼电影排行榜

    最近在学习xpath,在网上找资料的时候,发现一个新手经常拿来练手的项目,爬取猫眼电影前一百名排行的信息,很多都是跟崔庆才的很雷同,基本照抄.这里就用xpath自己写了一个程序,同样也是爬取猫眼电影, ...

  8. jQuery ajax 提交表单图片

    基于 jQuery HTML: <form id="form" enctype="multipart/form-data"> <input t ...

  9. HashMap原理探究

    一.写随笔的原因:HashMap我们在平时都会用,一般面试题也都会问,借此篇文章分析下HashMap(基于JDK1.8)的源码. 二.具体的内容: 1.简介: HashMap在基于数组+链表来实现的, ...

  10. shell中字符串操作【转】

    转自:http://blog.chinaunix.net/uid-29091195-id-3974751.html 我们所遇到的编程语言中(汇编除外)都少不了字符串处理函数吧,当然shell编程也不例 ...