c语言分隔符分离出str字符串中的数字,C语言版Tokenize()函数,由分隔符获取字符串...
測試環(huán)境:
操作系統(tǒng): Windows10 64位
運(yùn)行環(huán)境: Visual Studio 10
函數(shù):
/***************************************************************
/* 函 數(shù) 名:Tokenize
/* 函數(shù)功能:C語言版Tokenize(),類似MFC/VC++中的CString類的方法
/* Tokenize(),搜索分隔符,返回分隔符前的字符串,每一次
* 搜索結(jié)束后uPos保存分隔符的下一個(gè)位置
/* 參 數(shù):
/* 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
/***************************************************************
/* 函 數(shù) 名:Tokenize
/* 函數(shù)功能:C語言版Tokenize(),類似MFC/VC++中的CString類的方法
/* Tokenize(),搜索分隔符,返回分隔符前的字符串,每一次
/* 搜索結(jié)束后uPos保存分隔符的下一個(gè)位置
/* 參 數(shù):
/* 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("返回結(jié)果:%s\n",strResult);
}
}
return 0;
}
測試結(jié)果:
注:C語言中本身就有一個(gè)分割字符串的函數(shù)
原型
char *strtok(char s[], const char *delim);
功能
分解字符串為一組字符串。s為要分解的字符串,delim為 分隔符字符串。
例如:strtok("abc,def,ghi",","),最后可以分割成為abc def ghi.尤其在點(diǎn)分十進(jìn)制的IP中提取應(yīng)用較多。
說明
strtok()用來將字符串分割成一個(gè)個(gè)片段。參數(shù)s指向欲分割的 字符串,參數(shù)delim則為分割字符串中包含的所有字符。當(dāng)strtok()在參數(shù)s的字符串中發(fā)現(xiàn)參數(shù)delim中包含的分割字符時(shí),則會(huì)將該字符改為\0 字符。在第一次調(diào)用時(shí),strtok()必需給予參數(shù)s字符串,往后的調(diào)用則將參數(shù)s設(shè)置成NULL。每次調(diào)用成功則返回指向被分割出片段的 指針。
返回值
從s開頭開始的一個(gè)個(gè)被分割的串。當(dāng)查找不到delim中的字符時(shí),返回NULL。
所有delim中包含的字符都會(huì)被濾掉,并將被濾掉的地方設(shè)為一處分割的節(jié)點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的c语言分隔符分离出str字符串中的数字,C语言版Tokenize()函数,由分隔符获取字符串...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言文件发送程序,C语言程序例程的文件
- 下一篇: 24点游戏c语言去除重复,C语言解24点