[問題] strtok問題

看板C_and_CPP (C/C++)作者 (知足常樂)時間16年前 (2009/05/30 22:35), 編輯推噓0(007)
留言7則, 4人參與, 最新討論串1/1
請問 char copy[255]; cmnd = strtok(inpt," "); //get the first command cmnd = strtok(NULL," "); if(strncmp(cmnd,"<",1)==0) { strcpy(copy,cmnd); filename=strtok(copy,"<"); } cmnd = strtok(NULL," "); //go now to the next token for commands printf("remain cmnd=%s\n",cmnd); input為 cat <xx >333 以空白符號切cmnd=cat 再切cmnd=<xx 我把cmnd字元指標拷貝到copy字元陣列,以免動到cmnd,之後copy以<符號切 但是再切cmnd就沒東西,也就是remain cmnd=NULL,不是原來預期的>333 為什麼會這樣???我明明把把cmnd字元指標拷貝到copy!! 是因為記憶體指向同個位置嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.160.55.86

05/30 23:34, , 1F
建議研究一下strtok_r 如果你是用unix的話@@
05/30 23:34, 1F

05/30 23:35, , 2F
(上面指的是unix-like系列的作業系統)
05/30 23:35, 2F

05/30 23:35, , 3F
你的問題在於 因為執行了strtok(copy,...);
05/30 23:35, 3F

05/30 23:36, , 4F
所以後面的strtok(NULL, " ");是以那個為基礎繼續處理
05/30 23:36, 4F

05/31 08:57, , 5F
所以我覺得 strtok 很難用...
05/31 08:57, 5F

05/31 14:58, , 6F
自己寫一個token函式吧 :P
05/31 14:58, 6F

06/01 12:04, , 7F
謝謝各位的解答:)
06/01 12:04, 7F
文章代碼(AID): #1A8KH2w4 (C_and_CPP)
文章代碼(AID): #1A8KH2w4 (C_and_CPP)