Exp05-Basic04,GJBook3-07-11 字符串部分删除

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

img

用代码块功能插入代码,请勿粘贴截图

这个问题我有两种思路,其中一种没问题,但是这一种一直有个点通过不了,不知道怎么回事

#include 
#include<string.h>
char* str_delete(char* s, int v, int w);
int main() {
    char str[300]; int v, w;
    scanf_s("%d%d", &v, &w);
    getchar();
    gets(str);    
    puts(str_delete(str, v, w));
    return 0;
}
char* str_delete(char* s, int v, int w) {
    char* mark = s + w;
        for (int j =0; j 1; j++) {
            if ((v + w) < strlen(s)){
                *(s + w) = *(s);
                    s++;
            }
    }
        return mark;
}


我的解答思路和尝试过的方法
我想要达到的结果麻烦各位看一下

img

#include<string.h>

char* str_delete(char* s, int v, int w);
int main() {
    char str[300]; int v, w;
    scanf_s("%d%d", &v, &w);
    getchar();
    gets(str);
    puts(str_delete(str, v, w));
    return 0;
}

char* str_delete(char* s, int v, int w) {
    char* mark = s + w;

    //移动v-1个字符,即v-1次
    for (int j = 1; j <= v - 1; j++) {
        //应该从后往前移动字符
        //第v-1字符(下标v-2)开始移动到v+w-1(下标v+w-2)位置
        //第v-2字符开始移动到v+w-2位置
        // ...
        // ...
        *(s + v + w - j - 1) = *(s + v - j - 1);
    }
    return mark;
}