从src数组起始位置向后偏移start个字符的位置开始,最多复制len个非NUL字符到dst数组。

/****************************************
*  File Name  : substr.c
*  Creat Data : 2015.1.19
*  Author     : ZhouYuan
*****************************************/

/* 从src数组起始位置向后偏移start个字符的位置开始,最多复制len个非NUL字符到dst数组。
复制完毕后,dst数组必须以NUL字节结尾。函数的返回值是存储于dst数组中的字符串长度
如果start所指定的位置越过了src数组的尾部,或者start或len的值为负,那么复制到dst数组的是个空字符串*/
#include <stdio.h>
#include <string.h>
int substr( char dst[], char src[], int start, int len )
{
	int n;
	int count = 0;
	char *ret = dst;
	char *end = src;
	while( *end != '\0')
	{
		end++;
		count++;
	}
	if( start < 0 || len < 0 || start > count)
	{
		*dst = '\0';
	}
	else 
	{
		if( start <= count )
		{
			for( n = start; n <= (start+len);n++ )
			{
				*dst++ = *src++;
			}
		}
		*dst = '\0';
	}
	return strlen(ret);
}

int main()
{
	char arr[10];
	char brr[] = "1234567890";
	printf("%d\n",substr( arr,brr,11,5 ));
	printf("%d\n",substr( arr,brr,2,5 ));
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值