a2563039540 2022-10-12 22:02 采纳率: 66.7%
浏览 60
已结题

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

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

img

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

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

#include <stdio.h>
#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 <v-1; j++) {
            if ((v + w) < strlen(s)){
                *(s + w) = *(s);
                    s++;
            }
    }
        return mark;
}


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

1条回答 默认 最新

  • [Pokemon]大猫猫 2022-10-12 23:03
    关注

    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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月22日
  • 已采纳回答 10月14日
  • 创建了问题 10月12日

悬赏问题

  • ¥15 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 VUE项目怎么运行,系统打不开