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

测试环境:

操作系统: Windows10 64位

运行环境: Visual Studio 10

函数:

/***************************************************************

/* 函 数 名:Tokenize

/* 函数功能:C语言版Tokenize(),类似MFC/VC++中的CString类的方法

/* Tokenize(),搜索分隔符,返回分隔符前的字符串,每一次

* 搜索结束后uPos保存分隔符的下一个位置

/* 参 数:

/* str:源字符串

/* c:分隔符或者其他指定字符

/* uPos:搜索分隔符的起始位置,第一次从零开始

/* 返 回 值:

/* 返回分隔符前的字符串

/*

/*依赖的头文件:

/*#include

/*#include

/*

/* 作 者: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

{

if(str[i] != c)

{

strRet[i-*uPos] = str[i];

}

else

{

break;

}

}

strRet[i-*uPos] = '\0';

*uPos = i+1;

return strRet;

}

测试代码:

#include

#include

#include

/***************************************************************

/* 函 数 名:Tokenize

/* 函数功能:C语言版Tokenize(),类似MFC/VC++中的CString类的方法

/* Tokenize(),搜索分隔符,返回分隔符前的字符串,每一次

/* 搜索结束后uPos保存分隔符的下一个位置

/* 参 数:

/* str:源字符串

/* c:分隔符或者其他指定字符

/* uPos:搜索分隔符的起始位置,第一次从零开始

/* 返 回 值:

/* 返回分隔符前的字符串

/*

/*依赖的头文件:

/*#include

/*#include /*

/*

/* 作 者: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

{

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;

}

测试结果:

07a62414be8081dc5437c6e135376c15.png

注: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中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值