strcpy库函数的实现。。strncpy库函数的实现

今天我在写完代码后,想起strcpy这个库函数,经过查阅,自己总结出来一点,也顺便再写一遍strcpyh函数,也是让自己练习练习。

先来了解strcpy函数的功能,strcpy是将src地址(源)开始到'\0',包括'\0'的字符串拷贝到dst地址(目的)中去。

来看具体代码

 

char *strcpy(char *dst,const char *src)
{
	char *d = dst;//保存目的首地址
	assert((dst != NULL) && (src != NULL));//断言
	while(*dst++ = *src++)//把dst指针的内容一个一个赋值给src所指向的空间
	{					  //因为后置++所以先赋值后++,到\0,因为\0的ASCII码值为0,等于0就跳出循环
		;
	}
	return d;
}

 

 

 

 

 

这是库函数,那么咱们来实验一下,自己的写一个主要函数

 

int main()
{
	char arr[20] = {0};
	strcpy(arr,"hello world");
	
	printf("%s",arr);
	return 0;
}

strncpy库函数的实现

strncpy是在strcpy的基础上加上了拷贝的个数n,所以实现起来很简单,但是要注意的是:

如果当拷贝的字符个数n小于要拷贝的src的字符个数,在库函数中,是没有加上'\0'的。

如果要拷贝的个数n大于src字符的个数,这时候拷贝至'\0'即可。

代码:

#include <stdio.h>
#include <assert.h>
#include <string.h>

char* Strncpy(char* dst, char* src, size_t n)
{
	assert(dst != NULL || src != NULL);
	if (n >= strlen(src))
	{
		while (n&&(*dst++ = *src++) != '\0')
		{
			--n;
		}
	}
	else
	{
		while (n--)
		{
			*dst++ = *src++;
		}
		//*dst = '\0';
	}
	return dst;
}


代码中const 用法:

 

被const修饰的是常量不能改变,但能通过指针修改内容。

修饰指针指针不能改变,但指针所指向的内容可以改变。。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值