请编写函数,删除子串。
函数原型
char* StrRemove(char *str, int idx, int len);
说明:str
为指示字符串起始地址的指针,idx
为子串的起始位置(下标),len
为子串的长度。函数删除字符串 str
中从下标 idx
处开始、长度为 len
的子串,函数值为 str
。若 len
值不正确,则自动修正。若 idx
值不正确,则不删除子串。
要求:直接在原数组上完成操作,不要借助其它数组。
裁判程序
#include <stdio.h>
char* StrRemove(char *str, int idx, int len);
int main()
{
char a[1024];
int i, n;
gets(a);
scanf("%d%d", &i, &n);
StrRemove(a, i, n);
puts(a);
return 0;
}
/* 你提交的代码将被嵌在这里 */
输入样例1
abcd
1 2
输出样例1
ad
输入样例2
abcd
1 5
注:5 不正确,按3处理。
输出样例2
a
输入样例3
abcd
2 -5
注:-5 不正确,按 0 处理
输出样例3
abcd
输入样例4
abcd
-1 2
输出样例4
abcd
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码:
char* StrRemove(char *str, int idx, int len) { int i,length; for(length=0;str[length]!='\0';length++);//计算总长度 if(len<0) { len=0; } if(idx<0 ||idx>=length); else { if(idx+len>length) { len=length-idx; } for(i=1;str[idx+len]!='\0';i++) { str[idx]=str[idx+len]; idx++; } if(str[idx+len]=='\0') { str[length-len]='\0'; } } return str; }