[問題] strtok的運作(已爬文 看不懂@@)

看板C_and_CPP (C/C++)作者 (忠言本逆耳,實願君向善.)時間16年前 (2009/09/06 15:46), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
關於strtok我已經知道它是依據自訂的符號對字串進行切割 且strtok通常的寫法是 result = strtok( str2, delims ); while( result != NULL ) { printf( "result is \"%s\"\n", result ); result = strtok( NULL, delims ); } 假設 char str2[] = "ABC*de=a*3answer" char delims[]="*" char *result =NULL; 那今天印出的result 分別是 ABC de=a 3answer 我的問題來了..strtok的運作方式是否是 將ABC傳給result之後,再多傳一個null字元.(此時strtok內部指向第一個*) 然後strtok再將內部的指標(?)指向d 之後result = strtok( NULL, delims ); 就從d開始讀 是這樣嗎? -- 生死去來 棚頭傀儡 一線斷時 落落磊磊 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.194.100.216

09/06 16:14, , 1F
strtok.c source code : http://fxr.googlebit.com/source/
09/06 16:14, 1F

09/06 16:14, , 2F
lib/libc/string/strtok.c
09/06 16:14, 2F

09/06 16:24, , 3F
*看了樓上的網址...頭更痛了 囧
09/06 16:24, 3F

09/06 18:10, , 4F
你可以看重點...既然你都覺得從d開始讀....那就是一樓網址找
09/06 18:10, 4F

09/06 18:11, , 5F
一定有個變數會去記錄之前讀到哪個字元...
09/06 18:11, 5F

09/06 18:12, , 6F
然後就會看到 "static char *last;" 應該就是你要的~
09/06 18:12, 6F
文章代碼(AID): #1AesYxo7 (C_and_CPP)
文章代碼(AID): #1AesYxo7 (C_and_CPP)