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. TCP和SSL TCP应用

    TCP和SSL TCP应用 对于普通开发者而言编写TCP应用通讯是一件相对复杂的工作,毕竟需要一系列的bytes操作:如果再针对SSL的安全性处理相信会把很多普通开发者拒之门外.为了简化这一问题Bee ...

  2. flutter环境配置(windows)

    参考以下链接 下载安装步骤: https://www.cnblogs.com/yangyxd/p/8809512.html 安装Flutter环境遇到Android license status un ...

  3. Java中流的操作练习

    文件中的学生信息 学生信息存储在TXT文件中,我们需要对信息进行基本的,增.删.改.查,全部显示操作. 1.学生类/Student package com.yujiao.student; public ...

  4. Tableau常用图表

    条形图: 饼图: 调整大小: 折线图: 面积图: 组合图: 文本表: 突出显示表: 直方图: 气泡图: 散点图:

  5. [c++] 计算太阳高度角

    /* 输入参数: Longitude - 经度(单位"度") Latitude - 纬度(单位"度") Year - 年 Month - 月 Day - 日 H ...

  6. MYSQL—第二部分(Linux版本的安装和数据表的操作)

    Linux版本的安装(过于简单了) 安装: ? 1 yum install mysql-server 服务端启动 ? 1 mysql.server start 客户端连接 ? 1 2 3 4 5 6 ...

  7. python_0基础开始_day08

    第八节 1,文件操作 文件操作目的: 持久化,永久存储 (数据库之前 -- 文件操作就是代替数据库) 读 1,找到文件位 2,双击打开 3,进行一些操作 4,关闭文件 open() 打开,通过pyth ...

  8. 安装Python环境

    首先我们来安装Python,Python3.5+以上即可 1.首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图 ...

  9. Linux安全审计

    Client: OMAudit_agent.py #!/usr/bin/env python #coding:utf- import sys import socket import fcntl im ...

  10. 2种方法实现java对象的深拷贝

    2种方法实现java对象的深拷贝 2017年12月03日 22:23:07 iCoding91 阅读数 4420更多 分类专栏: java   版权声明:本文为博主原创文章,遵循CC 4.0 BY-S ...