(c语言)最后两个re数组超范围但不知道哪里超了,求大佬帮忙
查看原帖
(c语言)最后两个re数组超范围但不知道哪里超了,求大佬帮忙
627886
duoaidaoc楼主2021/12/13 19:34
#include<stdio.h>
#include<string.h>
main()
{
    int k1, k2, k3;
    scanf("%d%d%d", &k1, &k2, &k3);
    char p[2000];
    char q[200];
    memset(q, 0, 200);
    scanf("%s", p);
    int h = 0;
    for (int i = 1;i <= strlen(p) - 2;i++)
    {
        if (p[i] == '-')
        {
            if (p[i + 1] == '-' || p[i - 1] == '-')
                continue;
            if (p[i - 1] >= p[i + 1])
                continue;
            if (p[i + 1] <= 'z' && p[i + 1] >= 'a' && p[i - 1] <= '9' && p[i - 1] >= '0')
                continue;
            if (p[i - 1] + 1 == p[i + 1])
            {
                for (int x = i;x <= strlen(p) - 2;x++)
                {
                    p[x] = p[x + 1];
                }
                p[strlen(p) - 1] = '\0';
                continue;
            }
            if (p[i - 1] + 1 < p[i + 1])
            {
                for (int x = p[i - 1] + 1;x <= p[i + 1] - 1;x++)
                {
                    for (int j = 1;j <= k2;j++)
                    {
                        if (k1 != 3)
                        {
                            q[h] = x;//!!!!
                            h++;
                        }
                        else
                        {
                            q[h] = '*';
                            h++;
                        }
                    }
                }
                if (p[i - 1] <= 'z' && p[i - 1] >= 'a')
                {
                    if (k1 == 2)
                        for (int j = 0;j <= strlen(q) - 1;j++)
                            q[j] = q[j] - 'a' + 'A';
                }
                if (k3 == 2&&k1!=3)
                {
                    int r;
                    for (int j = 0;j <= strlen(q) - 1-j;j++)
                    {
                        r = q[j];
                        q[j] = q[strlen(q) - 1 - j];
                        q[strlen(q) - 1 - j] = r;
                    }
                }
                int nlen = strlen(p);
                p[nlen] = '0';
                p[nlen + strlen(q)-1] = '\0';
                for (int j = nlen - 1;j >= i + 1;j--)
                {
                    p[j + strlen(q)-1] = p[j];
                }
                h = 0;
                for (int j = i;j <= i + strlen(q)-1;j++)
                {
                    p[j] = q[h];
                    h++;
                }
                memset(q, 0, 200);
                h = 0;
            }
        }
    }
    printf("%s", p);
}
2021/12/13 19:34
加载中...