#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
char command [110];
char Data [110];
void add(char *cmd,char *data)
{
while(*data != '\0')
{
data ++;
}
strcpy(data,cmd);
}
void str_del(int n,int k,char *data)
{
char *tmp_data = new char [110];
strcpy(tmp_data,data+n);
tmp_data [k] = '\0';
strcpy(data,tmp_data);
delete tmp_data;
}
void del(char *rest_command,char *data)
{
int n,k;
sscanf(rest_command,"%d %d",&n,&k);
str_del(n,k,data);
}
void str_insert(int a,char *cmd,char *data)
{
strcpy(data+a,cmd);
}
void insert(char *rest_command,char *data)
{
int a;
char *tmp_data = new char [110];
sscanf(rest_command,"%d %s",&a,tmp_data);
str_insert(a,tmp_data,data);
delete tmp_data;
}
int seek(char *rest_command,char *data)
{
char *p = strstr(data,rest_command);
if(p==NULL)
{
return -1;
}
return p - data;
}
void process(int mode,char *rest_command,char *data)
{
switch(mode)
{
case 1:
add(rest_command,data);
break;
case 2:
del(rest_command,data);
case 3:
insert(rest_command,data);
case 4:
std::cout<<seek(rest_command,data)<<std::endl;
break;
default:
std::cout<<data<<std::endl;
}
}
int main(int argc,char **argv)
{
int q;
scanf("%d\n",&q);
int mode;
scanf("%s\n",Data);
for(int i = 1;i<=q;i++)
{
scanf("%s\n",command);
sscanf(command,"%d ",&mode);
process(mode,command+2,Data);
}
return 0;
}
代码如上。不知道为什么。