6-1 删除子串*

请编写函数,删除子串。

函数原型

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;
}

c0a5f61c0b094cfebe5f9eeb81d7e968.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值