strtok()函数
生活随笔
收集整理的這篇文章主要介紹了
strtok()函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
strtok()
將字符串拆分成tokens,tokens是被分隔符中的任何字符分隔的連續(xù)字符序列
char* strtok( char* str,const char* sep );
- sep參數(shù)是個字符串,定義了用作分隔符的字符集合
- 第一個參數(shù)指定一個字符串,它包含了0個或者多個由sep字符串中一個或者多個分隔符分割的標(biāo)記。
- strtok函數(shù)的第一個參數(shù)不為 NULL ,函數(shù)將找到str中第一個標(biāo)記,strtok函數(shù)將保存其在字符串中的位置。
- 如果字符串中不存在更多的標(biāo)記,則返回 NULL 指針。
工作原理:
strtok函數(shù)找到str中的下一個標(biāo)記,并將其用 \0 結(jié)尾,返回一個指向這個標(biāo)記的指針。
(注: strtok函數(shù)會改變被操作的字符串(置\0操作),所以在使用strtok函數(shù)切分的字符串一般都是臨時拷貝的內(nèi)容 并且可修改。)
如下一段代碼
char arr[] = "Atsuki@yeah.net"; const char* sep = "@."; strtok(arr,sep);//從字符串頭開始找第一個標(biāo)記 strtok(NULL,sep);//從保存好的位置開始繼續(xù)往后找 strtok(NULL,sep);//從保存好的位置開始繼續(xù)往后找strtok會從arr的A開始找一直到分隔符@,找到后就會將@置為\0,并記住這個位置,然后返回Atsuki字段的首地址,即A的地址。
strtok(arr,sep);執(zhí)行后字符串就變?yōu)榱?/p> char arr[] = "Atsuki\0yeah.net";
然后strtok(NULL,sep);就會返回y的地址,并把.置為\0
下一個strtok(NULL,sep);會返回n的地址
如果再調(diào)用strtok(NULL,sep);就返回空指針
但是
一般我們會用將strtok作用在待切分字符串的臨時拷貝上,因為它會改變原字符串,并且我們把上面的代碼改進一下就是這樣的
int main() {char arr[] = "Atsuki@yeah.net";const char* sep = "@.";char buff[30] = {0};strcpy(buff,arr);char* str = NULL;for(str=strtok(buff,sep); str!=NULL; str=strtok(NULL,sep)){printf("%s\n", str);}return 0; }總結(jié)
以上是生活随笔為你收集整理的strtok()函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大师对攻读研究生的看法
- 下一篇: PotPlayer的官网