C语言 编写一个函数,它从一个字符串中提取一个子字符串

编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下:

int substr(char dst[], char src[],intstart, int len) {}

目标:

       从src数组起始位置向后偏移start个字符的位置开始,最多复制len个非NUL字符到dst数组。在复制完毕之后,dst数组必须以NUL字节结尾。函数的返回值是存储于dst数组中的字符串的长度。

注意:

函数的声明与调用;

空字符即为 \0;

#include <stdio.h>
int substr(char dst[], char src[],int start, int len)
{
    int i;
    for(i=0;i<len;i++)
    {
        dst[i]=src[start+i];    //从第start+i个元素开始向数组内赋值
    }
        dst[i]='\0';
        return i;
}
int main()
{
    char dst[10];               //定义实参
    char src[]="abcdef";
    int m;
    m=substr(dst,src,2,4);      //函数调用
    printf("%s\n",dst);
    printf("%d",m);
    return 0;
}



上面的程序有一个问题就是如果给定赋值的个数超出了整个长度,虽然字符串输出是正确的,但是输出的字符串的个数却超了。所以我们给它加上一个判断来看所给的值是否超过了本身剩下的字符串的长度;

#include <stdio.h>
int substr(char dst[], char src[],int start, int len)
{
	char *ps = src + start;     
	int n = strlen(ps);         //定义一个指针来求字符串长度
	
	int i = 0;
	
	if(n<len)
	{
		len = n;
	}
	
	while(len--)
	{
		dst[i]= ps[i];
		i++;
	}
	dst[i] = '\0';
}
int main()
{
	char dst[] = "abcdefghi";
	char src[] = "bit-tech";
	substr(dst,src,2,7);
	printf("%s\n",dst);
	return 0;
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值