回 帖 发 新 帖 刷新版面

主题:删除字符串中从指定。。。。高手过来帮忙啊!!!

编写函数,删除字符串中,从指定位置m开始的n个字符,删除成功,函数返回被删除字符串;否则返回

回复列表 (共15个回复)

11 楼

good!哈哈,三楼真是高!

12 楼

char* delstring(char* str, int m, int n)
{
  //删除从m开始的n个字符
  if (strlen(str) < m)
  {
    return str;//总长度达不到m则不用删除
  }

  if (strlen(str) < (m+n))
  {
    str[m]=0;//总长度达不到m+n,则后面没有剩余字符,直接将第m个字设为\0即可
    return str;
  }

  int l=strlen(p)-m-n;//被删内容后面还有多少字节
  memcpy(str+m, str+m+n, l+1);
  return str;
}

13 楼

蛮强的嘛!

14 楼

这样子不能返回输出被删除的字串
#include<string.h>char *fun(char *p,int m,int n)
{
    if(!p || m < 0 || n < 0 || strlen(p) < (m + n))
    {
       return 0;
    }
    char *s=p+m, *e=p+m+n;
    while(*s++=*e++);
    return p;
}
void main()
{
    char a[]="abcdefg";
    int b;
    cin>>b;
    char *k=fun(a,b,5);
    cout<<k<<endl;
}

15 楼


#include<string.h>//删除字符串中,从指定位置m开始的n个字符
char *fun(char *p,int m,int n)
{
    if(!p || m < 0 || n < 0 || strlen(p) < (m + n))
    {
       return 0;
    }
    char *s=p+m, *e=p+m+n;
    while(*s++=*e++);
    for(int i=m;i<m+n;i++)
    {
        cout<<*(p+i)<<endl;//为什么这里输出被删除字串有问题?
    }
    return p;
}
void main()
{
    char a[]="abcdefg";
    int b;
    cin>>b;
    char *k=fun(a,b,5);
    cout<<k<<endl;    //输出删除字符后的结果
    
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册