[問題] 做strtok有亂碼

看板C_and_CPP (C/C++)作者 (嗯....)時間12年前 (2013/10/23 14:48), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
開發平台(Platform): GCC 問題(Question): 我呼叫一個function 做strtok字串的分割,然後存入指標陣列中 最後把其內容印出來,但不知道為何我在function內印出結果都正確 但如果是回到main內印結果就會是亂碼? 程式碼(Code): int stringProcess(char *input[10]){ char inputTemp[] = "test1 test2 test3"; int temp = 0; char *t = strtok(inputTemp," "); while(t != NULL){ input[temp] = t; t = strtok(NULL," "); temp++; } return temp; } main(){ int num; char *keyIn[10]; num=stringProcess(keyIn); int i; for(i=0;i<num;i++){ printf("%s\n",keyIn[i]); } } 補充說明(Supplement): 我發現如果改成printf("%s!!\n",keyIn[i]) 然後在stringProcess內塞個 char tt[]=""; printf("%s",tt); 結果就正確了耶,不知道為何會這樣阿?小弟可能指標概念還沒很清楚 還請各位能幫小弟解惑。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.240.188 ※ 編輯: Tashuko 來自: 140.113.240.188 (10/23 14:54)

10/23 15:35, , 1F
上面 strtok 傳回的指標是指向 inputTemp 的某個位置,
10/23 15:35, 1F

10/23 15:37, , 2F
但 inputTemp 在 stringProcess() 回傳後就不存在了,
10/23 15:37, 2F

10/23 15:38, , 3F
這算是置底十三誡中, 第5誡 的變型.
10/23 15:38, 3F

10/23 15:40, , 4F
補充說明那段只能算運氣好, stack 中的值沒被後續處理給蓋掉.
10/23 15:40, 4F

10/23 19:07, , 5F
真的是像樓上所說的那樣耶 感激不盡阿!!!
10/23 19:07, 5F
文章代碼(AID): #1IPt5LFT (C_and_CPP)
文章代碼(AID): #1IPt5LFT (C_and_CPP)