2008年5月28日 星期三

char *strtok(char *str1, const char *str2)

屬於 string.h 的一個好用函式,可以將一個字串分割成一個一個的 token,第一次將 str1 傳給它以後,接著再呼叫此函式時,使用 NULL 當 str1,會自動接續到前一個 token 後面繼續讀,可以看看第一份參考資料的例子,再讀讀第二份參考資料的解釋,會比較容易瞭解,另外有一點要注意的是,str1 不是 const 型態,strtok 會修改 str1 這個字串裡面的資料,將包含有 str2 的字元改成 ' \0 ',所以接下來只能透過它所回傳的 pointer 來繼續使用這個字串,如果使用上出現問題,可以檢查自己所傳的 str1 有沒有問題 ( 剛剛 Google 時,看到某個人的血尿控訴 XDD~ )。

Example:
char *p_token,input[50]="Hamdy@Cairo Conrado@MexicoCity"
puts(input);
p_token=strtok(input,"@ \0");
strcpy(sender[0],p_token);
puts(input);
p_token=strtok(NULL,"@ \0");
strcpy(sender[1],p_token);
puts(input);
putchar('\n');
puts(sender[0]);
puts(sender[1]);

呼叫兩次 strtok() ,將所得到的 token 分別存進 sender[0] 與 sender[1] 兩個字元陣列,然後印出呼叫前與呼叫後的 input,得到的結果是
Hamdy@Cairo Conrado@MexicoCity
Hamdy
Hamdy

Hamdy
Cairo

參考資料:
http://www.cplusplus.com/reference/clibrary/cstring/strtok.html
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.14.html#strtok

沒有留言: