[問題] 拿掉字串中換行符號出現奇怪的錯誤

看板C_and_CPP作者 (jim)時間13年前 (2010/10/12 02:46), 編輯推噓1(109)
留言10則, 4人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我寫了一個程式 由於要用fscanf讀檔再作字串比對 所以要拿掉字串的換行符號 結果出現奇怪的錯誤 我不知道錯在哪 幫幫我好嗎 謝謝 希望得到的正確結果: Input your("b" to quit):a tmp= ---- String[j]=apple ---- 0 apple tmp= ---- String[j]=i have a apple. ---- 1 i have a apple. tmp= ---- String[j]=cookies ---- 2 cookies 程式跑出來的錯誤結果: Input your("b" to quit):a tmp= ---- String[j]=apple ---- 0 apple tmp= ---- String[j]=i have a apple. ---- 1 i have a apple. tmp= ---- String[j]=cookies ---- 2 cookiesa apple. 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) http://codepad.org/fvHQq1yF 問題出在Compare()下的 for(j=0;j<=i;j++){ //清空tmp strcpy(tmp,""); printf("tmp=%s\n",tmp); printf("----\nString[j]=%s----\n",String[j]); strncpy(tmp, String[j], strlen(String[j]) -1); strcpy(String[j], tmp); printf("%d %s\n\n\n",j,String[j]); }//end for-j 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.129.143

10/12 03:39, , 1F
strncpy 不會幫你補 '\0' 喔
10/12 03:39, 1F

10/12 03:43, , 2F
我加了strcat(tmp, "\0"); 還是有錯耶
10/12 03:43, 2F

10/12 03:44, , 3F
請問要怎麼改呢?
10/12 03:44, 3F

10/12 03:54, , 4F
先全部填成'\0'再複製字串就不缺結束字元了
10/12 03:54, 4F

10/12 03:59, , 5F
解決了,謝謝love大大Orz
10/12 03:59, 5F

10/12 07:18, , 6F
10/12 07:18, 6F

10/12 15:30, , 7F
sprintf我看懂了strncat我還看不懂,先謝謝
10/12 15:30, 7F

10/12 17:47, , 9F
你把要複製的字串接在空字串後面不就是複製XD
10/12 17:47, 9F

10/12 22:30, , 10F
感謝,我懂了strncat
10/12 22:30, 10F
文章代碼(AID): #1Cirjkql (C_and_CPP)