[問題] C的argument怪怪的...
看那本深入淺出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
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
12/01 14:05, 4F
→
12/01 14:06, , 5F
12/01 14:06, 5F
推
12/01 16:11, , 6F
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
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章