Re: [問題] strtok的問題

看板C_and_CPP作者 (QQ)時間15年前 (2009/05/01 14:27), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串2/7 (看更多)
※ 引述《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
它回傳的是一個C string,當然會補'\0',link裡面也有提到...
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
wei大的意思是說如果分割字元是字串開頭,回傳的是後面
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
文章代碼(AID): #19-fP7gE (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19-fP7gE (C_and_CPP)