c语言求助

P5734 【深基6.例6】文字处理软件

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


|