[問題] C的argument怪怪的...

看板C_and_CPP (C/C++)作者 (金屬製品)時間13年前 (2012/12/01 13:42), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串1/1
看那本深入淺出C 超級有趣的書 但竟然在一個很奇怪的地方執行無法成功: #include <stdio.h> #include <string.h> char inp[][80] = { "I left my heart in Harvard Med School", "Newark, Newark - a wonderful town", "Dancing with a Dork", "From here to maternity", "The girl from Iwo Jima", }; void find_track(char target[]) { int i; for(i = 0; i < 5; ++i){ if (strstr(inp[i], target)) printf("Track %i: '%s'\n", i, inp[i]); else printf("no result for: %s\n",target); } } int main() { char search_for[80]; printf("Search for: "); fgets(search_for, 80, stdin); find_track(search_for); return 0; } 有沒有人可以看的到箇中奧秘...? 小弟已經debug兩個多小時仍然找不到到底哪邊出錯 照原書一個字一個字打出來也是一樣的結果 也就是打 上面inp內的任何一個字都找不到 理論上來講 概念上應該也沒有任何問題才對 我在cygwin和linux各自compile也都沒問題 求程式鷹眼高手賜教... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.249.82.139 ※ 編輯: DreamLoser 來自: 111.249.82.139 (12/01 13:44)

12/01 13:44, , 1F
甚麼地方 甚麼錯誤訊息 哪一行
12/01 13:44, 1F

12/01 13:45, , 2F
猜猜看好了 大概這邊多個,吧"The girl from Iwo Jima",
12/01 13:45, 2F
沒有任何錯誤訊息 只是執行的時候不如預期(也就是從鍵盤端輸入inp任何一個字元/字串 應該是都會找到並印出來的) 後來google發現國外也有人在論壇上發現同樣一模一樣的問題... 所以100%確定是作者 本身並沒有親自執行過= =" 自問自答: 所以不能執行的原因在於fget會把enter的換行字元\n也一併放到了"search_for"內 所以理所當然再怎麼找都不可能找的到 因此解決方案就是把這個'\n'東西把它移掉: char *p = strchr(search_for, '\n'); *p = 0; ※ 編輯: DreamLoser 來自: 111.249.82.139 (12/01 13:58)

12/01 13:55, , 3F
要;
12/01 13:55, 3F

12/01 14:05, , 4F
search_for[strlen(search_for)-1] = 0;
12/01 14:05, 4F

12/01 14:06, , 5F
@@ 原來 ending 了
12/01 14:06, 5F

12/01 16:11, , 6F
題外話 find_track裡面else放到for迴圈之外如何?
12/01 16:11, 6F

12/01 16:16, , 7F
意思有點不一樣,五段句子跟一整段句子.
12/01 16:16, 7F

12/01 16:20, , 8F
可是語法要改一下 (又或者我想的不是你要的)
12/01 16:20, 8F
文章代碼(AID): #1GkPZSyQ (C_and_CPP)
文章代碼(AID): #1GkPZSyQ (C_and_CPP)