[問題] replace的問題

看板C_and_CPP (C/C++)作者 (丫丫)時間15年前 (2010/11/12 09:28), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 答案和理想答案不一樣 希望得到的正確結果: 例如str1 = yili str2 = 1234 在str1第三個位子(也就是l的位子)用str2取代 理想答案 : yil1234 跑出來卻是 : y1234 這是為什麼? 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev-c++ 有問題的code: (請善用置底文標色功能) 函數: int strLen(char *str1) //計算str1長度的函數 { //宣告變數 char *ptr = str1; //計算長度 while( *ptr != '\0' ) ptr++; return ptr - str1; } char *replace(char *dest, char *source, int num) // str2取代str1的函數 { //宣告變數 char *ptr = dest; //找到輸入num在dest的位子 while(*ptr++ != *(dest+num)); ptr--; //從num的位子,複製字串source while((*ptr++=*source++) != '\0'); return dest; } 主程式: int main() { /*宣告變數*/ char str1[80]; char str2[80]; char *ptr; int len; //宣告去存放str1的長度 int x, y; //宣告 在第幾個插入(y) 在第幾個取代(x) printf(" 請輸入str1 :"); gets(str1); //輸入字串str1 printf(" 字串str1為:%s\n", str1); len = strLen(str1); //計算str1的長度 printf(" 請輸入str2 :"); gets(str2); //輸入字串str2 printf(" 字串str2為:%s\n", str2); do { printf(" 取代字串,請輸入 x (欲取代的位子) : "); scanf("%d", &x); if( x < 0 || x > len ) //判斷x是否小於0或者大於str1的長度 printf(" 位置超出字串範圍 !\n"); }while(x < 0 || x > len); printf(" Replace 結果 :"); ptr = replace( str1, str2, x ); //把str2取代str1, 在第x的位子 printf("%s\n", ptr); system("pause"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.109.232

11/12 09:30, , 2F
趁這個機會學一下debugger怎麼用吧
11/12 09:30, 2F
文章代碼(AID): #1Ct9XPv- (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Ct9XPv- (C_and_CPP)