UVA 10115-Automatic Editing#
题目大意:替换字符,直到字符串找不到对应子字符串后输出
解题思路:利用strcat和strcpy操作
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int find(char *a, char *b, char *c, char *d) {
int s = 0;
for(int i = 0; b[i] != '\0'; i++) {
if(a[0] == b[i]) {
int j = 0;
for(int k = i;a[j] != '\0';k++,j++)
if(a[j] != b[k])
break;
if(a[j] == '\0') {
strcat(d,c);
strcat(d,b+i+j);
strcpy(b,d);
return 1;
}
else {
d[s] = b[i];
s++;
}
}
else {
d[s] = b[i];
s++;
}
}
d[s] = '\0';
return 0;
}
int main() {
int n;
char a[15][1000], b[15][1000];
char c[10000],d[10000];
while(scanf("%d", &n) && n != 0) {
memset(c,'\0',sizeof(c));
memset(a,'\0',sizeof(a));
memset(b,'\0',sizeof(b));
getchar();
for(int i = 0; i < n; i++) {
gets(a[i]);
gets(b[i]);
}
gets(c);
int x;
for(int i = 0; i < n;) {
memset(d,'\0',sizeof(d));
x = find(a[i],c,b[i],d);
if(x == 0)
i++;
}
puts(c);
}
return 0;
}