weixin_43131829 2023-03-30 09:24 采纳率: 66.7%
浏览 11
已结题

关于#c++#的问题:删除指定字符串崩了为什么呢


char *delete_string(char *str,int pos,int len)
{
    char *p=str+pos;//指向pos位置的字符
    int str_len = strlen(str);//自定义方法
    //int str_len=strlen(str);//字符长度库函数
    if ((pos<1)||(p-str)>str_len)//检查pos是否不大于1,或pos超出字符串长度
    {
        return str;
    }
    if ((p+len-str)>str_len)//len大于pos后剩余的字符个数的话,只需对pos位置赋'\0'
    {
        *p='\0';
        return str;
    }
    while (*p && *(p+len))//len小于或等于pos后剩余的字符个数删除len个字符
    {
        *p=*(p+len);
        p++;
    }
    *p='\0';
    return str;
}

int _tmain(int argc, _TCHAR* argv[])
{

    //get_max(1,2,3,get_big);
    char *a = "abcddfa";
    char *b = "df";
    const char*c = delete_string(a,2,2);

    return 0;
}

img


p=(p+len);崩了

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2023-03-30 09:25
    关注

    a是常量字符串,不可以修改的。改为 char a[] = "abcddfa";

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月30日