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

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 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
  • ¥15 前后端分离的学习疑问?
  • ¥15 stata实证代码答疑
  • ¥50 husky+jaco2实现在gazebo与rviz中联合仿真
  • ¥15 dpabi预处理报错:Error using y_ExtractROISignal (line 251)
  • ¥15 在虚拟机中配置flume,无法将slave1节点的文件采集到master节点中
  • ¥15 husky+kinova jaco2 仿真
  • ¥15 zigbee终端设备入网失败
  • ¥15 金融监管系统怎么对7+4机构进行监管的