void str_replace(char s[],char oldchar,char newstr[])//在字符串s[]中,查找字符oldchar,替换成字符串newstr[]
{
int s_len = strlen(s); //计算长度
int newstr_len = strlen(newstr);
int i = 0;
while(s[i])
{
if(s[i] == oldchar) //如果找到了> < = 把它后面的字符串后移6-1个单位 要放&large &small &equal
{
for(int j = s_len,b=0 ; j > i; j-- ) //将<后面的字符移动 6-1= 5位 b是移动次数
{
s[s_len +6-1 - b ] = s[s_len-b] ;
b++;
}
s[s_len +newstr_len +1]='\0'; //最后结个尾
int a; //将 &large 插入 s[i]处
int b=0;
for(a=i; a< i+6 ; a++)
{
s[a]=newstr[b];
b++;
}
//不加break 会把所有都替换掉
//break; //替换完成 退出循环
}
i++;
}
}
int main()
{
char a[100]="abc > 123 < 456 = 78<9";
char ch='>';
char b[]="&large";
printf("string a[] = %s\n",a);
str_replace(a,'>',"&large");
str_replace(a,'<',"&small");
str_replace(a,'=',"&equal");
printf("string a[] = %s\n\n",a);
return 0;
}
结果是:
string a[ ] = abc > 123 < 456 = 78<9
string a[ ] = abc &large 123 &small 456 &equal 78&small