主题:删除字符串中从指定。。。。高手过来帮忙啊!!!
			 黑色雪人
				 [专家分:0]  发布于 2006-01-06 09:56:00
 黑色雪人
				 [专家分:0]  发布于 2006-01-06 09:56:00							
			编写函数,删除字符串中,从指定位置m开始的n个字符,删除成功,函数返回被删除字符串;否则返回
						
					 
		
			
回复列表 (共15个回复)
		
								
				沙发
				
					 大K [专家分:1090]  发布于 2006-01-06 10:49:00
大K [专家分:1090]  发布于 2006-01-06 10:49:00				
				#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();
}
本来想写深刻点,谁知还是一堆垃圾
这个是返回删除后的字符串
							 
						
				板凳
				
					 大K [专家分:1090]  发布于 2006-01-06 11:00:00
大K [专家分:1090]  发布于 2006-01-06 11:00:00				
				#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 楼
				
					 pcboyxhy [专家分:2910]  发布于 2006-01-06 11:27:00
pcboyxhy [专家分:2910]  发布于 2006-01-06 11:27:00				
				char *fun(char *p,int m,int n)
{
    char *s=p+m, *e=p+m+n;
    while(*s++=*e++);
    return p;
}
							 
						
				4 楼
				
					 aiby [专家分:15340]  发布于 2006-01-06 11:31:00
aiby [专家分:15340]  发布于 2006-01-06 11:31:00				
				#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 楼
				
					 大K [专家分:1090]  发布于 2006-01-06 11:44:00
大K [专家分:1090]  发布于 2006-01-06 11:44:00				
				受教了
							 
						
				6 楼
				
					 pcboyxhy [专家分:2910]  发布于 2006-01-06 11:57:00
pcboyxhy [专家分:2910]  发布于 2006-01-06 11:57:00				
				我怀疑楼上的人是趁机灌水的
							 
						
				7 楼
				
					 大K [专家分:1090]  发布于 2006-01-06 17:11:00
大K [专家分:1090]  发布于 2006-01-06 17:11:00				
				我是夸四楼的,没夸三楼你
							 
						
				8 楼
				
					 江大沙锅 [专家分:5660]  发布于 2006-01-06 18:41:00
江大沙锅 [专家分:5660]  发布于 2006-01-06 18:41:00				
				灌水没什么不好的啊  灌水不是显得论坛更有人情味吗
							 
						
				9 楼
				
					 祝蜚 [专家分:720]  发布于 2006-01-06 20:35:00
祝蜚 [专家分:720]  发布于 2006-01-06 20:35:00				
				三楼的程序简捷,美中不足的是少了越界的判断。
							 
						
				10 楼
				
					 nyra [专家分:4800]  发布于 2006-01-06 20:54:00
nyra [专家分:4800]  发布于 2006-01-06 20:54:00				
				嗯,补充一下条件。
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;
}
							 
									
			
我来回复