【题目描述】
输入一个字符串,以回车结束(字符串长度≤200)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
【输入】
第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>
int main() {
char s[201], a[101], b[101]; // 定义三个字符数组,分别用于存储输入的字符串、需要替换的子串和替换后的子串
char result[201] = ""; // 定义一个字符数组,用于存储处理后的结果
fgets(s, 200, stdin); // 从标准输入读取一行字符串,存储到s中
fgets(a, 100, stdin); // 从标准输入读取一行字符串,存储到a中
fgets(b, 100, stdin); // 从标准输入读取一行字符串,存储到b中
// 去掉换行符
s[strcspn(s, "\n")] = 0;
a[strcspn(a, "\n")] = 0;
b[strcspn(b, "\n")] = 0;
char *token = strtok(s, " "); // 使用空格作为分隔符,将字符串s分割成多个子串
while (token != NULL) { // 遍历所有子串
if (strcmp(token, a) == 0) { // 如果当前子串与需要替换的子串相同
strcat(result, b); // 将替换后的子串添加到结果中
} else {
strcat(result, token); // 否则,将当前子串添加到结果中
}
strcat(result, " "); // 在每个子串之间添加一个空格
token = strtok(NULL, " "); // 继续处理下一个子串
}
// 去掉最后一个空格
result[strlen(result) - 1] = '\0';
printf("%s\n", result); // 输出处理后的结果
return 0;
}