CCF-CSP题解 201509-3 模板生成系统
简单的替换一下字符串。
注意数组开大点。
#include<bits/stdc++.h>
const int maxm = 100;
const int maxn = 100;
using namespace std;
char buf[maxm + 10][110];
struct tNode
{
char var[110];
char value[110];
};
tNode node[maxn + 10];
int main()
{
int m, n;
scanf("%d%d", &m, &n);
getchar();
for (int i = 1; i <= m; i++)
{
scanf("%[^\n]", buf[i]);
getchar();
}
for (int i = 1; i <= n; i++)
{
scanf("%s", node[i].var);
getchar();
scanf("%[^\n]", node[i].value);
node[i].value[strlen(node[i].value) - 1] = '\0';
getchar();
}
for (int i = 1; i <= m; i++)
{
for (int j = 0; buf[i][j] != '\0'; j++)
{
if (buf[i][j] == '{' && buf[i][j + 1] == '{')
{
char var[110];
for (int k = 0; ; k++)
{
if (buf[i][j + k + 3] == ' ')
{
var[k] = '\0';
j += k + 5;
break;
}
else
var[k] = buf[i][j + k + 3];
}
for (int k = 1; k <= n; k++)
{
if (strcmp(node[k].var, var) == 0)
{
printf("%s", node[k].value + 1);
break;
}
}
}
else
printf("%c", buf[i][j]);
}
printf("\n");
}
return 0;
}