10115 - Automatic Editing

来源:互联网 发布:linux系统怎么学 编辑:程序博客网 时间:2024/06/10 16:50

题目:10115 - Automatic Editing


题目大意:将给定的字符串里出现的上面替换规则中相对前面的字符串,替换成规则中的字符串相应字符串,然后继续重头开始从头开始判断,有就替换,没有就换下一个替换规则;注意替换规则的字符串是按顺序来替换给定的字符串,只有当前一个字符串已经找不到相对应要被替换的字符时,下一个替换规则才开始;注意里面的用来替换的字符串可能为空;记得要初始化为全0,以防上次数据残留导致错误;


解题思路:用strstr找出现替换字符串的起始位置,用strcpy(char * 被赋值起始指针,char* 被复制起始指针)复制,控制被赋值起始指针,从而达到替换字符串的效果;

#include<stdio.h>#include<string.h>const int N = 260;const int M = 12;const int K = 85;char * num = NULL;char str[N];char tmp[N];struct RP {char data[2][K];} rp[M];int main() {int t, i, j;memset(rp, 0, sizeof(rp));memset(str, 0, sizeof(str));memset(tmp, 0, sizeof(tmp));while(scanf("%d%*c",&t) && t) {for (i = 0; i < t; i++) {gets(str);strcpy(rp[i].data[0] , str);memset(str, 0, sizeof(str));gets(str);strcpy(rp[i].data[1] , str);memset(str, 0, sizeof(str));}gets(str);for (i = 0; i < t; i++) {while(true) {num = strstr(str, rp[i].data[0]);if(num == NULL) break;int l1 = strlen(rp[i].data[0]);int l2 = strlen(rp[i].data[1]);strcpy(tmp, num+l1);strcpy(num ,rp[i].data[1] );strcpy(num + l2,tmp);}}puts(str);memset(str, 0, sizeof(str));memset(rp, 0, sizeof(rp));memset(tmp, 0, sizeof(tmp));num = NULL;}return 0;}


0 0
原创粉丝点击