#include <stdio.h>
#include <string.h>
void replace(char string[], char key[], char swap[])
{
int stringlen,keylen,swaplen,i,j,flag;
char temp[1001]; //开辟一个能够容纳最长字符串的数组
stringlen = strlen(string);
keylen = strlen(key);
swaplen = strlen(swap);
for (i=0; i<= stringlen-keylen; i++)
{
flag = 1;
for (j=0; j<keylen; j++)
{
if (string[i+j] != key[j])
{//如果当前不是要替换的字串,则转到第一个for循环,指向下一个字符
flag = 0;
break;
}
}
if (flag)
{//如果找到要替换的字符串
strcpy(temp, string); //字符串全部复制到temp数组
strcpy(&temp[i],swap);//将swap字符串复制到当前i处,即被替换字符串的第一个字符在string的位置处
strcpy(&temp[i+swaplen],&string[i+keylen]); //然后再将string中被替换字符串后面的字符复制到已经替换字符串的后面
strcpy(string,temp);//再将temp复制给string
i += swaplen-1;//i指向被替换后的下一个字符更新字符串
stringlen = strlen(string);//更新字符串长度
}
}
}
int main(void)
{
char str[1001];
char key[] = "you";
char swap[] = "we";//将字符串str里面的you子串替换为we
while (gets(str) != NULL)
{
replace(str,key,swap);
printf("%s\n",str);
}
return 0;
}
每日一算法:字符串的替换
最新推荐文章于 2024-11-04 16:04:55 发布
2474

被折叠的 条评论
为什么被折叠?



