函數名: strtok
頭檔:<string.h>
函數原型: char *strtok(char *str1, const char *str2);
功能: 用指定的分隔符號分解字串
參數: char *str1 為要分解的字串
const char *str2 為分隔符號字串
傳回值: 傳回下一個分割後的字串指針,如果已無從分隔,則傳回NULL
注意: 1.函數的作用是分解字串,所謂分解,即沒有產生新串,只是在s所指向的內容首次出現分界符的位置,將分界符修改成了'/0',故第一次用strtok()傳回第一個子串
2.第一次提取子串完畢之後,繼續對來源字串s進行提取,應在其後(第二次,第三次。。。第n次)的調用中將strtok的第一個參數賦為空值NULL(表示函數繼續從上一次呼叫隱式保存的位置,繼續分解字串;對於前一次次呼叫來說,第一次呼叫結束前用一個this指標指向了分界符的下一位)
3.當this指標指向「 」 時,即沒有被分割的子字串了,此時則回傳NULL
4.可以把delim理解為分隔符號的集合,delim中的字元皆可以作為分隔符號。
5.strtok在呼叫的時候,如果起始位置即為分隔符,則忽略了起始位置開始的分隔符
6.該函數會改變str1的值,所以str1必須是字串數組,不能是字串指針
程式範例: 將字串陣列input透過分隔符號,分隔開,並將結果輸出
#include<string.h>#include<stdio.h>intmain(void){charinput[50]=Ilikewww.dotcpp.comverymuch;char*p=strtok(input,);if(p){printf(%s n,p);}while(p=strtok(NULL,)){//使用第一個參數為NULL來擷取子字串printf(%sn,p);}return0;}
運行結果:
Ilikewww.dotcpp.comverymuch