#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char a[200],*b,*c,*p,*p1;
int i,j,k=0,q,t,x,y;
scanf("%d",&q);
scanf("%s",a);
p=a;
for(i=0;i<q;i++)
{
scanf("%d",&t);
switch(t)
{
case 1:b=(char *)malloc(200*sizeof(char));
scanf("%s",b);
strcat(a,b);
printf("%s\n",a);
free(b);
break;
case 2:scanf("%d%d",&x,&y);
for(j=0;j<y;j++)
{
printf("%c",*(p+j+x));
*(p+j)=*(p+j+x);
}
for(j=0;j<100;j++)
{
*(p+y+j)='\0';
}
printf("\n");
break;
case 3:scanf("%d",&x);
b=(char *)malloc(200*sizeof(char));
c=(char *)malloc(200*sizeof(char));
scanf("%s",b);
for(j=x;j<=strlen(a)+1;j++)//这里为什么是j<=strlen(a)+1呀?自己画示意图感觉
{ //应该是j<strlen(a) ,而且j<strlen(a)与j<=strlen(a)
c[k]=a[j]; //的效果一样是为什么?
a[j]='\0';
k++;
}
c[k]='\0';
strcat(a,b);strcat(a,c);
printf("%s\n",a);
free(b);free(c);
break;
case 4:b=(char *)malloc(200*sizeof(char));
scanf("%s",b);
p1=strstr(a,b);
if(p1!=NULL)
{
printf("%d\n",p1-p);
}
else
{
printf("-1\n");
}
free(b);
break;
}
}
return 0;
}
case 3:部分有问题(应该是),样例2,3显示有某一行太短,但自己看不出什么毛病。 (另外这种代码放预览里面感觉好丑陋啊,大佬有让他好看些的排版方法吗)