为什么我的程序有问题?

问题遇到的现象和发生背景

img

用代码块功能插入代码,请勿粘贴截图
#include
#include
void insert(char* s,int n);
void inverse(char* s,int n);
int main()
{
    char a[11000];
    scanf("%s",a);
    int len1 = strlen(a);
    insert(a,len1);
    int len2 = strlen(a);
    inverse(a,len2);
    puts(a);
    return 0;
}
void insert(char* s,int n)
{
    int count = 0;
    for (int i = 0;iif ((i + 1) % 2 == 0)
        {
            for (int j = i + 1;j1) = *(s + j);
            }
            *(s + n - count) = '\0';
            count++;
            *(s + i + 1) = ' ';
        }
    }
}
void inverse(char* s,int n)
{
    for (int i = 0; i 1 - i);
    }
}

运行结果及报错内容

我的程序没有办法运行

img

你赋值的时候*(s+j+1)=*(s+j) 前面一个数赋给后面一个数 但是你循环到了第二次就将前面赋的值继续赋给后面的数所以造成了全是e 你应该从后往前赋值
先得到最末尾的依次往后赋值这样才不会发生被覆盖的情况