多组数据。每组数据输入包括3行, 第1行是包含多个单词的字符串 s, 第2行是待替换的单词a,(长度<=100) 第3行是a将被替换的单词b。(长度<=100) s, a, b 最前面和最后面都没有空格.
每个测试数据输出只有 1 行, 将s中所有单词a替换成b之后的字符串。
You want someone to help you You I
I want someone to help you
#include <stdio.h>
#include <string.h>
#define maxn 110
char s[maxn][maxn];
char temp[maxn];
char a[maxn], b[maxn];
void erase_n(char *s)
{
if (s[strlen(s) - 1] == '\n')
s[strlen(s) - 1] = '\0';
}
int main()
{
while (fgets(temp, maxn, stdin) != NULL)
{
erase_n(temp);
char *sp = temp;
int num;
for (num = 0; sp < temp + strlen(temp) && sscanf(sp, "%s", s[num]) != EOF;sp += strlen(s[num]) + 1, num++);
fgets(a, maxn, stdin), erase_n(a);
fgets(b, maxn, stdin), erase_n(b);
for (int i = 0; i < num; i++)
{
if (!strcmp(s[i], a))
{
strcpy(s[i], b);
}
}
for (int i = 0; i < num; i++)
{
printf("%s", s[i]);
printf("%s", i != num - 1 ? " " : "\n");
}
}
return 0;
}