关于#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);崩了

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

因为你的字符串是只读的,用字符数组

   char a[100] = "abcddfa";
   char b[100] = "df";