strcpy和memcpy函数的实现

本文详细介绍了C语言中字符串复制与内存复制的实现方式,包括自定义函数`strcpy1`与`memcpy1`,以及改进版的`mymemcpy`函数,通过实例演示了如何高效地进行字符串与内存的复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <cstdio>

char* strcpy1(char *des,const char *src)  //自己的 
{
	if(des== NULL || src== NULL)
		return NULL;
	char *pDes= des;
	char *pSrc= (char*)src;
	while((*pDes++= *pSrc++)!= '\0');
		return pDes;
}

void* memcpy1(void *des, const void *src, unsigned int len) //自己的 
{
	if(des== NULL || src== NULL)
		return NULL;
	char *pDes= (char*)des;
	char *pSrc= (char*)src;
	if(pDes<= pSrc || pDes>= pSrc+ len)
	{
		while(len--)
			*pDes++= *pSrc++;
	}		
	else
	{
		pDes+= len- 1;
		pSrc+= len- 1;
		while(len--)
			*pDes--= *pSrc--;
	}
	return des;
}



void *mymemcpy(void *dst,const void *src,size_t num)  //别人的改进 
{  
    //assert((dst!=NULL)&&(src!=NULL));  
    int wordnum = num/4;//计算有多少个32位,按4字节拷贝  
    int slice = num%4;//剩余的按字节拷贝  
    int * pintsrc = (int *)src;  
    int * pintdst = (int *)dst;  
    while(wordnum--)*pintdst++ = *pintsrc++;  
    while (slice--)*((char *)pintdst++) =*((char *)pintsrc++);  
    return dst;  
}  

int main()
{
	char ch[20]="123";
	char cc[20];
	strcpy1(cc, ch);
	printf("%s %s\n",cc,ch);
	memcpy1(cc+3,ch,4);
	printf("%s %s\n",cc,ch);
	memcpy1(cc+1, cc, 7);
	printf("%s\n",cc);
	int a[]={1,2,3,4,5};
	int b[20];
	memcpy1(b, a, sizeof(int)*5);
	//mymemcpy(b, a, sizeof(int)*5);
	for(int i= 0; i< 5; i++)
		printf("%d\n",b[i]);	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值