当前位置:  编程技术>c/c++/嵌入式

C语言切割多层字符串(strtok_r strtok使用方法)

    来源: 互联网  发布时间:2014-10-22

    本文导语:  1. strtok介绍 众所周知,strtok可以根据用户所提供的分割符(同时分隔符也可以为复数比如“,。”)将一段字符串分割直到遇到"". 比如,分隔符=“,” 字符串=“Fred,John,Ann” 通过strtok 就可以把3个字符串 “Fred”      ...

1. strtok介绍

众所周知,strtok可以根据用户所提供的分割符(同时分隔符也可以为复数比如“,。”)
将一段字符串分割直到遇到"".

比如,分隔符=“,” 字符串=“Fred,John,Ann”

通过strtok 就可以把3个字符串 “Fred”      “John”       “Ann”提取出来。

上面的C代码为

代码如下:

int in=0;
char buffer[]="Fred,John,Ann"
char *p[3];
char *buff = buffer;
while((p[in]=strtok(buf,","))!=NULL) {
i++;
buf=NULL; }

如上代码,第一次执行strtok需要以目标字符串的地址为第一参数(buf=buffer),之后strtok需要以NULL为第一参数 (buf=NULL)。指针列p[],则储存了分割后的结果,p[0]="John",p[1]="John",p[2]="Ann",而buf就变 成    FredJohnAnn。

2. strtok的弱点

让我们更改一下我们的计划:我们有一段字符串 "Fred male 25,John male 62,Anna female 16" 我们希望把这个字符串整理输入到一个struct,

代码如下:

struct person {
char [25] name ;
char [6] sex;
char [4] age;
}

要做到这个,其中一个方法就是先提取一段被“,”分割的字符串,然后再将其以“ ”(空格)分割。
比如: 截取 "Fred male 25" 然后分割成 "Fred" "male" "25"
以下我写了个小程序去表现这个过程:

代码如下:

#include
#include
#define INFO_MAX_SZ 255
int main()
{
int in=0;
char buffer[INFO_MAX_SZ]="Fred male 25,John male 62,Anna female 16";
char *p[20];
char *buf=buffer;

while((p[in]=strtok(buf,","))!=NULL) {
buf=p[in];
while((p[in]=strtok(buf," "))!=NULL) {
in++;
buf=NULL;
}
p[in++]="***"; //表现分割
buf=NULL; }

printf("Here we have %d stringsn",in);
for (int j=0; jFred
male
25
***Fred
male
25
***
John
male
62
***
Anna
female
16
***

    
 
 

您可能感兴趣的文章:

  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • C语言字符串库 AString
  • c语言 字符串函数 子串
  • C语言字符串处理库 cstring
  • C语言中的字符串拼接问题,怎么得不到我想要的字符串?
  • C语言字符串函数库 Strfunc
  • c语言有什么简单办法判断一个字符串是否是合法日期?
  • C语言实现输入一个字符串后打印出该字符串中字符的所有排列
  • c语言中如何通过日期时间字符串得到时间戳?
  • 如何用C语言去除字符串两边的空字符
  • Linux下C语言怎么把长整型转换为字符串
  • Linux下的C语言字符串和字符有几种类型?和Windows下区别是不是很大?
  • linux下c语言字符串数据类型的问题!
  • c语言 字符串转大写的简单实例
  • Linux c语言 如何统计utf-8编码的包含中英文和各种符号的字符串中各个字符的个数
  • c语言中用字符串数组显示菜单的解决方法
  • C语言字符串原地压缩实现方法
  • C语言中字符串和数字的相互转换实现代码
  • c语言中time_t类型是一个长整型,java中的字符串"YYYY-MM-DD HH:MM:SS"怎么转换为这个长整型?
  • 用c语言根据可变参数合成字符串的实现代码
  • 非常着急,关于DES加密的,用java加密过的字符串,药用Linux下的C语言来解密,涉及到补位的问题,弄了几天都没有实现,有高手会的,请指点一二!!!!!!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c语言打开文件函数使用方法
  • C语言使用普通循环方法和递归求斐波那契序列示例代码
  • c语言操作文本的基本使用方法
  • linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql
  • 混合语言编程—C#使用原生的Directx和OpenGL绘图的方法
  • WQL语言简介和WQL测试工具wbemtest.exe使用方法详细介绍
  • python基础教程之简单入门说明(变量和控制语言使用方法)
  • 使用C语言实现CRC校验的方法
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • c语言中用字符串数组显示菜单的解决方法 iis7站长之家
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • c语言实现MD5算法完整代码示例
  • 动态编程语言 LIME编程语言
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • C语言如何改变当前语言环境
  • c语言基于libpcap实现一个抓包程序过程
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • HTML超文本标记语言教程及实例
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • MD5算法的C语言实现
  • Redhat9安装时语言只选择了中文,现在还能再增加其它语言的支持吗?如英文
  • HTML 脚本语言介绍及<script>标签用法
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3