问题:使用C语言实现字符串中子字符串的替换
描述:编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。
举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:
ABCDEFGHIJKLMNOPQgggUVWXYZ
——————————————————————————————————————————————————————————————————————————
View Code
1 #include2 using namespace std; 3 4 void StrReplace(char* strSrc, char* strFind, char* strReplace) 5 { 6 int srclen = strlen(strSrc); 7 int findlen = strlen(strFind); 8 if(srclen < findlen) return; 9 10 // 找寻子串的起始位置 11 int start = -1,end = -1; 12 int i =0,j=0,k=0; 13 for(i =0;i replacelen) // 待替换子串的长度大于替换子串时 44 { 45 for(i=0;i end) 61 { 62 strSrc[j + k] = strSrc[j]; 63 j--; 64 } 65 j=0; i=0; 66 while(j < replacelen) 67 { 68 strSrc[start+i] = strReplace[j]; 69 i++; j++; 70 } 71 strSrc[srclen+k+1] = '\0'; 72 } 73 } 74 else 75 return; 76 77 } 78 79 void main() 80 { 81 char strSrc[50]; 82 char strFind[20]; 83 char strReplace[20]; 84 85 cin >> strSrc ; 86 cin >> strFind; 87 cin >> strReplace; 88 89 StrReplace(strSrc,strFind,strReplace); 90 91 cout << strSrc << endl; 92 }
待替换子串和替换子串长度相等时:
abcd
bcefaefd请按任意键继续. . .待替换子串长度大于替换子串时:
abcd
bcgagd请按任意键继续. . .待替换子串长度小于替换子串时:
abcd
bcefghaefghd请按任意键继续. . .