主题:删除字符串中从指定。。。。高手过来帮忙啊!!!
黑色雪人
[专家分:0] 发布于 2006-01-06 09:56:00
编写函数,删除字符串中,从指定位置m开始的n个字符,删除成功,函数返回被删除字符串;否则返回
回复列表 (共15个回复)
沙发
大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
#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
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
#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
受教了
6 楼
pcboyxhy [专家分:2910] 发布于 2006-01-06 11:57:00
我怀疑楼上的人是趁机灌水的
7 楼
大K [专家分:1090] 发布于 2006-01-06 17:11:00
我是夸四楼的,没夸三楼你
8 楼
江大沙锅 [专家分:5660] 发布于 2006-01-06 18:41:00
灌水没什么不好的啊 灌水不是显得论坛更有人情味吗
9 楼
祝蜚 [专家分:720] 发布于 2006-01-06 20:35:00
三楼的程序简捷,美中不足的是少了越界的判断。
10 楼
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;
}
我来回复