大佬们帮忙看看哪里错了,为什么输入四只能进行两次操作

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

ww13803608901ww @ 2024-12-20 18:42:35

#include<stdio.h>
#include<string.h>
int main()
{
    int n,choice,a,b,c,i,p;
    char str[150];
    char str2[100];
    scanf("%d",&n);
    getchar();
    scanf("%s",str);
    for(i=0;i<n;i++){
    scanf("%d",&choice);
    switch(choice){
    case 1:
    scanf("%s",&str2);
    strcat(str,str2);
    printf("%s",str);
    break;
    case 2:
    scanf("%d %d",&a,&b);
    for(i=0;i<=b-1;i++){
    str[i]=str[a+i];
    }
    for(i=b;str[i]!='\0';i++){
    str[i]='\0';
    }
    printf("%s",str);
    break;
    case 3:
    scanf("%d %s",&a,str2);
    c=strlen(str2);
    for(i=a;str[i]!='\0';i++){
    str[i+c]=str[i];
    }
    for(i=a;i<=a+c-1;i++){
    str[i]=str2[i-a];
    }
    printf("%s",str);
    break;
    case 4:
    scanf("%s",str2);
    c=strlen(str2);
    a=strlen(str);
    for(i=0;i<=a-c;i++){
    p=1;
    for(b=i;b<=i+c-1;b++){
    if(str[b]!=str2[b-i]){
    p=0;
    break;
     }
      }
    if(p){
    printf("%d",i);
    break;
     }
    }
    if(!p){
    printf("-1");
    }
    break;
     }
    }
    return 0;
}

by NeuroNO1 @ 2024-12-28 19:47:31

@ww13803608901ww你的外层循环用的是i,switch case2时的内层循环也是i,i冲突了。内层循环会将i加到超出输入的n。你要把内层循环的i换掉


|