回 帖 发 新 帖 刷新版面

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

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

回复列表 (共15个回复)

沙发

#include<conio.h>
#include<string.h>
char *fun(char *p,int m,int n)
{
  int i,j;
  for(i=m;i<m+n;i++)
    for(j=m;j<strlen(p);j++)
      *(p+j)=*(p+j+1);
  return p;
}
void main()
{
  char *m="wokankanzheduandaima";
  int x,y;
  printf("Please intput the number:\n");
  scanf("%d%d",&x,&y);
  printf("The char are:%s\n",fun(m,x-1,y));
  getch();
}
本来想写深刻点,谁知还是一堆垃圾
这个是返回删除后的字符串

板凳

#include<conio.h>
#include<string.h>
char *fun(char *p,int m,int n)
{
  int i;
  char *q=p+m;
  for(i=m;i<m+n;i++)
    *q++=*(p+i);
  i--;
  for(;i<strlen(p);i++)
    *(q+i)='\0';
  return q;
}
void main()
{
  char *m="wokankanzheduandaima";
  int x,y;
  printf("Please intput the number:\n");
  scanf("%d%d",&x,&y);
  printf("The char are:%s\n",fun(m,x-1,y));
  getch();
}
这个是返回被删除的字符串,编得更差劲[em8]

3 楼

char *fun(char *p,int m,int n)
{
    char *s=p+m, *e=p+m+n;
    while(*s++=*e++);
    return p;
}

4 楼

#include<stdio.h>
#define N 5
#define M 2
#define Sl 10
char *DelS(char *s,int n,int m);
int main(void)
{
    int n=N,m=M;
    char s[Sl]="abcdefghi",*p;
    printf("old S=%s\n",s);
    if(p=DelS(s,n,m))
    {
      printf("new S=%s\n",s);
      printf("del S=%s\n",p);
    }
    else
      puts("error");
    getch();
}
char *DelS(char *s,int n,int m)
{
    int i,j,d;
    char *ds;
    if(Sl-m-n<=0)
      return 0;
    for(i=j=d=0;s[i];i++)
    {
        if(i>=m-1&&i<m+n-1)
        {
          if(!d)
            ds=(char*)malloc(sizeof(char));
            else
              ds=(char*)realloc(ds,(d+1)*sizeof(char));
          ds[d++]=s[i];
          continue;
        }
        s[j++]=s[i];
    }
    s[j]='\0';
    return ds;
}

5 楼

受教了

6 楼

我怀疑楼上的人是趁机灌水的

7 楼

我是夸四楼的,没夸三楼你

8 楼

灌水没什么不好的啊  灌水不是显得论坛更有人情味吗

9 楼

三楼的程序简捷,美中不足的是少了越界的判断。

10 楼

嗯,补充一下条件。
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;
}

我来回复

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