给定一个文本字符串 s和 m个模板,每个模板用 {i}(0≤i≤9)表示,对应一个字符串 ti,请将 s中的所有形如 {i} 的字符串替换为 ti,如果 s中包含多个 {i},则所有的 {i}均需要被替换成 ti。输入第一行包含一个字符串 s,表示给定的文本字符串。s的长度不超过 1000,保证 s中非模板部分只出现英文字母、英文标点(不包括 { 和 } )及空格。 第二行包含一个整数 m(1≤m≤10),表示模板数量。 接下来 m行,每行包含一个字符串 ti,表示第 i种模板。ti的长度不超过 1010,且只出现英文字母。输出一个字符串,表示替换后的字符串。用C语言
时间: 2023-12-03 19:42:39 浏览: 66
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
#define MAX_TEMPLATE_NUM 10
#define TEMPLATE_LEN 1010
int main() {
char s[MAX_LEN + 1];
char templates[MAX_TEMPLATE_NUM][TEMPLATE_LEN + 1];
int m;
// 读入字符串 s
fgets(s, MAX_LEN + 1, stdin);
// 去掉换行符
s[strcspn(s, "\n")] = '\0';
// 读入模板数量 m
scanf("%d", &m);
// 读入模板字符串
for (int i = 0; i < m; i++) {
scanf("%s", templates[i]);
}
// 替换字符串中的模板
for (int i = 0; i < m; i++) {
char template_str[4];
sprintf(template_str, "{%d}", i);
char *pos = strstr(s, template_str);
while (pos != NULL) {
// 替换模板
strncpy(pos, templates[i], strlen(templates[i]));
pos += strlen(templates[i]);
// 继续查找下一个模板
pos = strstr(pos, template_str);
}
}
// 输出替换后的字符串
printf("%s\n", s);
return 0;
}
```
阅读全文