[問題] 邏輯錯誤錯的很奇怪

看板C_and_CPP作者 (jim)時間15年前 (2010/05/27 18:42), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) http://paste.bradleygill.com/index.php?paste_id=36041 這是我的Code 其中的一小段有邏輯錯誤的問題,我檢查不出來 希望得到的正確結果: ~略~ tmp=And check2=An. tmp=she check2=sh. ~略~ 程式跑出來的錯誤結果: 他跑出來的結果是 ~略~ tmp=And check2=Ano.. tmp=she check2=sho... tmp=is. check2=iso.... tmp=But check2=Buo..... tmp=they check2=the...... tmp=are check2=are....... tmp=not. check2=not........ 略的部份是正確的 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev C++ 有問題的code: (請善用置底文標色功能) 錯誤的程式碼區段為 while(fscanf(fp1,"%s",tmp)!=EOF){ strcpy(check1,tmp); strcpy(check2,"0"); strncpy(check2,tmp,strlen(tmp)-1);//tmp=And,check2=An printf("tmp=%s\n",tmp); strcat(check2,".");//check2=An. printf("check2=%s\n",check2); if(strcmp(check1,check2)==0){//too.==too. strcat(Sentence[i],check1); i++; }//end if else{ strcat(Sentence[i],check1); strcat(Sentence[i]," "); }//end else }//end while 補充說明: 我不知道如何修正code 更奇怪的是答案有的對有的錯 幫幫我好嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.128.197

05/28 03:48, , 1F
我想是strcat的問題 可是我實在不知道問題出在哪..= =
05/28 03:48, 1F
※ 編輯: chessjim 來自: 122.123.129.90 (05/28 05:28)

05/28 05:35, , 2F
很奇怪吧!?哈哈
05/28 05:35, 2F

05/28 06:19, , 3F
因為 strncpy() 不會自己加 '\0' 啦
05/28 06:19, 3F

05/28 09:21, , 4F
謝謝Ross0916,但是又出現新問題了
05/28 09:21, 4F

05/28 09:24, , 5F
新問題我自己解決了,謝謝
05/28 09:24, 5F
文章代碼(AID): #1B_hqAia (C_and_CPP)