描述
fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句子中的沼跃鱼(“marshtomp”,不区分大小写)。为了使句子不缺少成分,统一换成 “fjxmlhx” 。
输入
输入包括多行。
每行是一个字符串,长度不超过200。
一行的末尾与下一行的开头没有关系。
输出
输出包含多行,为输入按照描述中变换的结果。
The Marshtomp has seen it all before. marshTomp is beaten by fjxmlhx! AmarshtompB样例输出
The fjxmlhx has seen it all before. fjxmlhx is beaten by fjxmlhx! AfjxmlhxB
#include <iostream> #include <string.h> #define MAX (200+1) using namespace std; char* replace(char str[],char reg[], char info[]); int compareStr(char str1[], char str2[]); int main(void) { char buffer[MAX]; char reg[] = "marshtomp"; char info[] = "fjxmlhx"; while(gets(buffer)!=NULL){ printf("%s\n",replace(buffer,reg,info)); } return 0; } char* replace(char str[],char reg[], char info[]){ char temp[MAX]; int end = strlen(str) - strlen(reg); int regLen = strlen(reg); int infoLen = strlen(info); int inIdx = 0; int i = 0; while(i<=end){ if(compareStr(str+i,reg)){ strcpy(temp+inIdx,info); inIdx+=infoLen; i+=regLen; }else{ temp[inIdx++] = str[i++]; } } while(str[i]){ temp[inIdx++] = str[i++]; } temp[inIdx] = '\0'; strcpy(str,temp); return str; } int compareStr(char str1[], char str2[]){ char compareC; for(int i=0; i<strlen(str2);i++){ compareC = tolower(str1[i]); if(str2[i]-compareC) return 0; } return 1; }