日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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;

}

測試結果:

注: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语言分隔符分离出str字符串中的数字,C语言版Tokenize()函数,由分隔符获取字符串...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。