NeuroNO1 @ 2024-12-28 19:39:52
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char *pos;
char str[10086],s[1000],g[1000],h[10000],o[10000];
int n,opt,a,b,c,len,v=0;
char *p=str;
char z[1000];
scanf("%d",&n);
getchar();
gets(str);
for(int i=0;i<n;i++){
scanf("%d",&opt);
getchar();
switch(opt){
case 1:
gets(s);
strcat(str,s);
printf("%s\n",str);
break;
case 2:
scanf("%d%d",&a,&b);
for(int j=a;j<=a+b;j++){
printf("%c",str[j]);
}
printf("\n");
break;
case 3:
scanf("%d",&c);
getchar();
gets(g);
for(int k=0;k<c;k++){
h[k]=s[k];
// printf("%c",s[k]);
}
len=strlen(s);
strcat(h,g);
// printf("%s",g);
for(int l=c;l<len;l++){
o[v]=s[l];v++;
// printf("%c",s[l]);
}
strcat(h,o);
printf("%s\n",h);
// printf("\n");
break;
case 4:
gets(z);
if(strstr(h,z)==NULL){
printf("-1\n");
}else{
pos=strstr(h,z);
printf("%d\n",pos-h);
}
break;
default:break;
}
}
return 0;
}
给的样例和#1能过就是WA,不知道怎么办,求助
by Terrible @ 2024-12-28 19:50:04
@NeuroNO1
请注意洛谷题目数据可能含有 \r
!!
测试记录基本表明本题数据换行是 \r\n
。
请注意,\r
会被 gets
读入,对于本题推荐使用 scanf("%s",str)
(读入下一段以非空白字符开始的连续的非空白字符串)。
关于 gets
被废除这件事,整行读入请 尽量 换用 fgets
。