样例与第一个一样,但是全是WA,求助
查看原帖
样例与第一个一样,但是全是WA,求助
1482640
Luogu312415楼主2024/12/12 21:27
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void strcut(char *str, int beg, int end)
{
    int i = beg;
    int j = 0;
    char *str2 = (char *)malloc((110) * sizeof(char));
    for (; i <= end + beg - 1; i++, j++)
    {
        str2[j] = str[i];
    }
    str2[j] = '\0';
    strcpy(str, str2);
    free(str2);
}

void strinsert(char *str, char *str2, int beg)
{
    int j = 0;
    char *str3 = (char *)malloc((110) * sizeof(char));
    for (int i = 0; i < beg; i++)
    {
        str3[i] = str[i];
    }
    str3[beg] = '\0';
    int i = beg;
    j = 0;
    for (; str2[j]!= '\0'; j++, i++)
    {
        str3[i] = str2[j];
    }
    str3[i] = '\0';
    int k = beg;
    for (; str[k]!= '\0'; i++, k++)
    {
        str3[i] = str[k];
    }
    str3[i] = '\0';
    strcpy(str, str3);
    free(str3);
}

int main()
{
    int n, N;
    scanf(" %d", &n);
    getchar();
    char *str = (char *)malloc((101) * sizeof(char));
    char str0[n][101];
    gets(str);
    for (int i = 1; i <= n; i++)
    {
        int beg, end;
        scanf(" %d", &N);
        if(N == 1)
        {
            char *str2 = (char *)malloc((110) * sizeof(char));
            getchar();
            gets(str2);
            strcat(str, str2);
            strcpy(str0[i-1], str);
            free(str2);
        }
        else if(N == 2)
        {
            scanf(" %d%d", &beg, &end);
            strcut(str, beg, end);
            strcpy(str0[i-1], str);
        }
        else if(N == 3)
        {
            char *str3 = (char *)malloc((110) * sizeof(char));
            scanf("%d", &beg);
            getchar();
            gets(str3);
            strinsert(str, str3, beg);
            strcpy(str0[i-1], str);
            free(str3);
        }
        else if(N == 4)
        {
            int m;
            char str8[100];
            char *str4 = (char *)malloc((110) * sizeof(char));
            getchar();
            gets(str4);
            char *ret = strstr(str, str4);
            if(ret == NULL)
                m = -1;
            else
            {
                m = ret - str;
            }
            sprintf(str8, "%d", m);
            strcpy(str0[i-1], str8);
        }
    }
    free(str);
    for(int j = 0; j < n - 1; j++)
    {
        printf("%s\r\n", str0[j]);
    }
    printf("%s", str0[n - 1]);
    return 0;
}
2024/12/12 21:27
加载中...