主题:删除字符串中从指定。。。。高手过来帮忙啊!!!
黑色雪人
[专家分:0] 发布于 2006-01-06 09:56:00
编写函数,删除字符串中,从指定位置m开始的n个字符,删除成功,函数返回被删除字符串;否则返回
回复列表 (共15个回复)
11 楼
gezhenqiang [专家分:300] 发布于 2006-01-10 22:47:00
good!哈哈,三楼真是高!
12 楼
偷猫 [专家分:15960] 发布于 2006-01-10 23:54:00
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;
}
14 楼
yard58 [专家分:2200] 发布于 2006-01-15 13:19:00
这样子不能返回输出被删除的字串
#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 楼
yard58 [专家分:2200] 发布于 2006-01-15 14:29:00
#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; //输出删除字符后的结果
}
我来回复