Strcpy函数和Strncpy函数

strcpy函数详解

strcpy函数原型
char *strcpy( char *strDestination, const char *strSource);
库函数下的strcpy
#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "abcdef";
	strcpy(arr1, arr2);
	printf("%s", arr1);
	return 0;
}
模拟实现strcpy函数
//模拟实现strcpy
//字符串的拷贝
#include<stdio.h>
void my_strcpy(char* dest, char* source)//用指针接收
{
	while (*source != '\0')
	{
		*dest = *source;
		dest++;
		source++;
	}
	*dest =  *source;
}
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "hello word";
	my_strcpy(arr1, arr2);
	printf("%s", arr1);
	return 0;
}
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* source)
{
	assert(dest);
	assert(source);
	char* ret = dest;
	while(*dest++=*source++)
	{
		;
	}
	return ret;
}
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "abcdef";
	my_strcpy(arr1, arr2);
	printf("%s", arr1);
	return 0;
}
strcpy函数的注意事项
  • 源字符串必须以\0作为结束
  • strcpy会将源字符串中的\0拷贝到目标空间中
  • 目标空间必须要足够大,以确保存放源字符串
  • 目标空间必须可变
  • strcpy函数的模拟实现
strncpy的函数原型
char *strncpy( char *strDest, const char *strSource, size_t count );
//count为所要拷贝字符的个数
strncpy的注意事项
  • 拷贝count个字符从源到目标空间
  • 如果源字符串的长度小于count,则拷贝完源字符串之后,在目标的后面追加0(也就是\0),编译器会主动去追加\0
模拟实现strncpy
#include<stdio.h>
#include<assert.h>
#include<string.h>
char* my_strncpy(char* dest, const char* src, size_t count)
{
	assert(dest);
	assert(src);
	char* res = dest;
	int sz = 0;
	if (strlen(src) < count)//src长度小于len
	{
		sz = count - strlen(src);
		count = strlen(src);
	}
	while (count--)
	{
		*dest++ = *src++;
	}
	while (sz--)
	{
		*dest++ = '\0';
	}
	return res;
}
int main()
{
	char arr1[] = "hello world";
	char arr2[] = "nihaoa";
	my_strncpy(arr1, arr2, 8);
	printf("%s", arr1);
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值