UVA - 10115 Automatic Editing
题目大意:给出 find 字符串和 replace 字符串 以及一段文字,将文字中所有与 find 相等的字符串替换为 replace 字符串。
解题思路:strstr( )返回第一个子串的位置,用两个指针把文字截断,分别保存即可。百度了才知道还有 strstr( ) 这种黑科技。
注意点:
- cin 后似乎有一个换行符还在缓冲区,要getchar( ) 掉。
- getline( ) 读入的字符是参数数字 -1 ,被坑了两次。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main() {
int n , i , j ;
char s[500] , s2[500],f[15][100] , r[15][100] , *p , *q;
while( cin >> n , n) {
getchar();
for( i = 0; i < n ; i++ ) {
cin.getline(f[i] , 101 );
cin.getline(r[i] , 101 );
}
cin.getline( s , 505 );
for( i = 0; i < n ;i++) {
while( p = strstr(s,f[i]), p != NULL) {
q = p + strlen(f[i]);
strcpy( s2 , r[i] );
strcat( s2 , q );
strcpy( p , s2 );
}
}
cout << s << endl;
}
return 0;
}