题意是找到一个字符串里面的关键字,然后用另外的关键字来替换她。
学习了 strstr 和 sprintf 的用法。
代码:
#include <stdio.h>
#include <string.h>
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif // LOCAL
int k;
while (scanf("%d", &k) != EOF && k)
{
getchar();
char key[21][81], s[256], tmp[256];
for (int i = 0; i < 2 * k; i++)
{
gets(key[i]);
}
gets(s);
for (int i = 0; i < 2 * k; i += 2)
{
int len1 = strlen(key[i]);
int len2 = strlen(key[i + 1]);
while (1)
{
char *p;
p = strstr(s, key[i]);//找到匹配的地址
if(p == NULL)
break;
sprintf(tmp, "%s", p + len1);//将指针 p + strlen(key[i])之后的字符赋给tmp
sprintf(p, "%s", key[i + 1]);//将指针p之后赋上key[i+1]的字符串
sprintf(p + len2, "%s", tmp);//将key[i]之后的字符串还原
}
}
printf("%s\n", s);
}
return 0;
}