[問題] char array strtok的問題

看板C_and_CPP (C/C++)作者 (GHJK777)時間15年前 (2011/06/22 20:51), 編輯推噓3(303)
留言6則, 5人參與, 最新討論串1/1
char ptr[] = "abc acb aab bac bgf cde cas adc bop cod"; char *test = "abc acb aab bac bgf cde cas adc bop cod"; char *s1; char *s2; s1 = strtok(ptr, " "); s2 = strtok(test, " "); ptr test 不是一樣的宣告方式嗎? 可是s1 跑出來ok s2跑出來卻會error Program received signal: “EXC_BAD_ACCESS”. 這是什麼原因阿!! char * strtok ( char * str, const char * delimiters ); 這是strtok的原形 str 不是丟char *型態進去嗎? strtok(test, " "); 這到底錯在哪阿@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.24.35

06/22 20:55, , 1F
第一個是陣列,第二是指標
06/22 20:55, 1F

06/22 21:05, , 2F
嚴重發現很多人都不先看13戒,明明做的那麼好,例子那麼棒
06/22 21:05, 2F

06/22 21:27, , 3F
錯在 strtok 會更改 str 所指的字串內容
06/22 21:27, 3F

06/22 22:27, , 4F
char *test = "..." 這樣這段記憶體就只能讀不能寫
06/22 22:27, 4F

06/22 22:28, , 5F
strtok切完後會寫入'\0' 就爛囉~
06/22 22:28, 5F

06/22 23:13, , 6F
還是加個const保險 假如你有看到compiler的warn的話
06/22 23:13, 6F
文章代碼(AID): #1E0ULDsD (C_and_CPP)
文章代碼(AID): #1E0ULDsD (C_and_CPP)