[問題] replace的問題
( *[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, , 1F
11/12 09:30, 1F
→
11/12 09:30, , 2F
11/12 09:30, 2F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章