测试环境:

操作系统: Windows10 64位

运行环境: Visual Studio 10

函数:

/***************************************************************
/*  函 数 名:Tokenize
/*  函数功能:C语言版Tokenize(),类似MFC/VC++中的CString类的方法
/*            Tokenize(),搜索分隔符,返回分隔符前的字符串,每一次
*             搜索结束后uPos保存分隔符的下一个位置
/*  参    数:
/*            str   :源字符串
/*            c     :分隔符或者其他指定字符
/*            uPos  :搜索分隔符的起始位置,第一次从零开始
/*  返 回 值:
/*            返回分隔符前的字符串
/*
/*  依赖的头文件:
/*          #include <stdlib.h>
/*          #include <string.h>
/*
/*  作    者:X攻城狮
/*  日    期:2015年11月5日
/***************************************************************/
char* Tokenize(const char *str, const char c, unsigned int * const uPos)
{unsigned int uLen = strlen(str);if(*uPos >= uLen){return "";}char *strRet = (char *)malloc(uLen + 1 - *uPos);memset(strRet, 0, uLen+1);unsigned int i = *uPos;for(i=*uPos; i<uLen+1; i++){if(str[i] != c){strRet[i-*uPos] = str[i];}else{break;}}strRet[i-*uPos] = '\0';*uPos = i+1;return strRet;
}

测试代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>/***************************************************************
/*  函 数 名:Tokenize
/*  函数功能:C语言版Tokenize(),类似MFC/VC++中的CString类的方法
/*            Tokenize(),搜索分隔符,返回分隔符前的字符串,每一次
/*            搜索结束后uPos保存分隔符的下一个位置
/*  参    数:
/*            str   :源字符串
/*            c     :分隔符或者其他指定字符
/*            uPos  :搜索分隔符的起始位置,第一次从零开始
/*  返 回 值:
/*            返回分隔符前的字符串
/*
/*  依赖的头文件:
/*                  #include <stdlib.h>
/*                  #include <string.h>/*
/*
/*  作    者:X攻城狮
/*  日    期:2015年11月5日
/***************************************************************/
char* Tokenize(const char *str, const char c, unsigned int * const uPos)
{unsigned int uLen = strlen(str);if(*uPos >= uLen){return "";}char *strRet = (char *)malloc(uLen + 1 - *uPos);memset(strRet, 0, uLen+1);unsigned int i = *uPos;for(i=*uPos; i<uLen+1; i++){if(str[i] != c){strRet[i-*uPos] = str[i];}else{break;}}strRet[i-*uPos] = '\0';*uPos = i+1;return strRet;
}int main()
{char strTest[1024] = "wer,qsd,54543,5345,dad,523fs,532rwt4,";char strResult[1024] = "NULL";unsigned int uPos = 0;while(strcmp(strResult,"")){strcpy(strResult, Tokenize(strTest, ',', &uPos));if(strcmp(strResult,"")){printf("返回结果:%s\n",strResult);}   }return 0;
}

测试结果:

注:C语言中本身就有一个分割字符串的函数

原型

char *strtok(char s[], const char *delim);

功能

分解字符串为一组字符串。s为要分解的字符串,delim为 分隔符字符串。
例如:strtok("abc,def,ghi",","),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多。

说明

strtok()用来将字符串分割成一个个片段。参数s指向欲分割的 字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的 指针。

返回值

从s开头开始的一个个被分割的串。当查找不到delim中的字符时,返回NULL。
所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。

C语言版Tokenize()函数,由分隔符获取字符串相关推荐

  1. c语言分隔符分离出str字符串中的数字,C语言版Tokenize()函数,由分隔符获取字符串...

    测试环境: 操作系统: Windows10 64位 运行环境: Visual Studio 10 函数: /********************************************** ...

  2. C语言中文件初始化,C语言版GetPrivateProfileString()函数,从初始化文件中指定的条目取得字串...

    /*************************************************************** /* 函 数 名:GetPrivateProfileString /* ...

  3. 【SQL】sql版Split函数。用于拆分字符串为单列表格

    [SQL]sql版Split函数.用于拆分字符串为单列表格 功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移 ...

  4. Swift3.0语言教程使用Unicode范式标准化获取字符串

    Swift3.0语言教程使用Unicode范式标准化获取字符串 Swift3.0语言教程使用Unicode范式标准化获取字符串,在NSString中可以使用4个属性去使用Unicode范式标准化获取字 ...

  5. c++语言获得字符长度,c++怎么获取字符串长度?

    C++获取字符串长度 strlen()函数 函数 strlen()是一个常规函数,他接受一个 C-风格字符串作为参数,并返回字符串包含的字符数. 参数必须是字符型指针(char*).当数组名作为参数传 ...

  6. c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)

    c语言自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数) 程序流程图: 代码: #include<stdio.h> char strupr(char ch[ ...

  7. C语言---写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串

    题目: 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串. #include <string.h> #include <stdio.h> void left_re ...

  8. (C语言)写一个函数,实现两个字符串的比较, 即自己写一个strcmp函数,函数原型为int strcmp(const char* p1, const char* p2)

    写一个函数,实现两个字符串的比较, 即自己写一个strcmp函数,函数原型为int strcmp(const char* p1, const char* p2);设p1指向字符串s1,p2指向字符串s ...

  9. c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数

    http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...

最新文章

  1. letswave7中文教程3:脑电数据预处理-ICA去除伪影
  2. mysql导出linux,linux下mysql导出导入方法
  3. Swoole 源码分析——Server模块之初始化
  4. 为什么使用NativeJdbcExtractor
  5. 清朝神秘女科学家,在国外火了200多年,我却对她一无所知…
  6. Dubbo(十四) dubbo的服务降级与集群容错
  7. 离阿里最近的机会,来了!
  8. input 标签左对齐
  9. 获取Access数据库字段的所有属性(转)
  10. P-Associated-URI
  11. 迪艾姆python培训视频
  12. ant-design tree 设置默认选中状态_[路由系列]5分钟设置一台Ubiquiti的ERX路由器
  13. Linux命令之md5sum
  14. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  15. cp: omitting directory `XXX'问题解决
  16. python程序员推荐笔记本_震惊脸!这5个软件难道只有Python程序员才知道吗?
  17. openCv4Android之fitLine中各算法总结
  18. QPSK调制解调过程,包括串并转换,电平转换,载波调制,相干解调,抽样判决等
  19. 【数据结构】各种数据结构的特点介绍
  20. ElasticSearch(四):DSL Query

热门文章

  1. 大学四年生活总结_大学四年,我总结了一个道理,多米诺骨牌效应
  2. VMware---之网卡设置
  3. html首行下沉效果,css仿word首字下沉效果示例
  4. win10系统计算机如何加密,win10怎么样把电脑文件夹加密
  5. git branch 管理分支(超详细)
  6. 订阅号的编辑模式----微信开发二(1)
  7. 手机行业通用名词解释大全(不看不知道)
  8. 【机器学习】什么是决策树模型?如何去构建决策树?何时使用决策树?何时使用神经网络?
  9. 快捷回复软件有哪些,哪些快捷回复软件可提高卖家的效率
  10. 《在小吃店碰到凯恩斯》