利用BF算法(index函数)和串替换(RepStr函数)实现把目标串s中最先出现的子串(由键盘输入)替换成指定的串t(由键盘输入) 。如在目标串s=“xyzabc123ab”将“ab”替换为t=“xyz”。
#include<stdio.h>
#include<string.h>
int index(char *s, char *t)
{
int i, j;
for (i = 0; s[i] != '\0'; i++)
{
for (j = 0; t[j] != '\0'; j++)
{
if (s[i + j] != t[j])
break;
}
if (t[j] == '\0')
return i;
}
return -1;
}
void RepStr(char *s, char *t, char *p)
{
int i, j, k;
i = index(s, t);
if (i == -1)
printf("没有找到子串\n");
else
{
for (j = 0; p[j] != '\0'; j++)
s[i + j] = p[j];
for (k = 0; t[k] != '\0'; k++)
s[i + j + k] = s[i + k + strlen(t)];
s[i + j + k] = '\0';
printf("替换后的字符串为:%s\n", s);
}
}
int main()
{
char s[100], t[100], p[100];
printf("请输入目标串:");
scanf("%s", s);
printf("请输入要查找的子串:");
scanf("%s", t);
printf("请输入要替换的字符串:");
scanf("%s", p);
RepStr(s, t, p);
return 0;
}