日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2025/4/5 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言分隔符分离出str字符串中的数字,C语言版Tokenize()函数,由分隔符获取字符串... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

測(cè)試環(huán)境:

操作系統(tǒng): Windows10 64位

運(yùn)行環(huán)境: Visual Studio 10

函數(shù):

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

/* 函 數(shù) 名:Tokenize

/* 函數(shù)功能:C語(yǔ)言版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;

}

測(cè)試代碼:

#include

#include

#include

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

/* 函 數(shù) 名:Tokenize

/* 函數(shù)功能:C語(yǔ)言版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;

}

測(cè)試結(jié)果:

注:C語(yǔ)言中本身就有一個(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)用較多。

說(shuō)明

strtok()用來(lái)將字符串分割成一個(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()函数,由分隔符获取字符串...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。