Re: [問題] strtok的問題
※ 引述《Schematic (唸書電動網拍)》之銘言:
: 最近在測試strtok的功能,發現有個疑問
: 程式碼:
: char s[] = "This is a string";
: char *tmp;
: tmp = strtok(s, "T");
: 疑問的地方:
: strtok會記錄字串分割起頭為 &s[0],
: 然後把分界字元改成\0,
: 因此這個字串應該變成了"\0his is a string"
: 分割起頭位置改為 &s[1],
: 並且會把上次分割起頭的位址傳給tmp,
: 我的疑問是為什麼tmp在分割後的值不是"\0",
: 而是"his is a string"呢?
: 謝謝~
最近剛好在Linux 上用到此函式
查了一下man page
http://linux.die.net/man/3/strtok
char *strtok(char *str, const char *delim);
大意是說
strtok 會因為你給定的delim
把string parse 成多個token
就把它當成會以delim做分割
把string分成許多子字串
我好像沒有看到會補\0...
照你寫的來看
你以T當成delim
所以整個字串 This is a string
只會分成一個子字串 his is a string
所以temp 就自然是 his is a string了
要是你把delim 改成 "i"
你執行strtok一次後
tmep 就是 "Th" 了
以上不知有沒有說錯
我用的結果是這樣
希望對你有幫助
--
→
11/02 21:11,
11/02 21:11
推
11/02 21:12,
11/02 21:12
→
11/02 21:12,
11/02 21:12
推
11/02 21:13,
11/02 21:13
→
11/02 21:12,
11/02 21:12
→
11/02 21:13,
11/02 21:13
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.12.217
→
05/02 12:59, , 1F
05/02 12:59, 1F
→
05/02 15:22, , 2F
05/02 15:22, 2F
→
05/02 15:23, , 3F
05/02 15:23, 3F
推
05/02 21:42, , 4F
05/02 21:42, 4F
→
05/02 21:42, , 5F
05/02 21:42, 5F
→
05/14 13:24, , 6F
05/14 13:24, 6F
討論串 (同標題文章)