实现自己的strcpy和memcpy
来源:互联网 发布:centos 6.8 搭建lnmp 编辑:程序博客网 时间:2024/05/22 13:41
实现自己的strcpy和memcpy
(1)实现自己的strcpy
strcpy 函数提供了字符串复制。即strcpy只用于字符串复制,并且它不仅复制字符串的内容,还会复制字符串的结束符。
strcpy函数原型是: char* strcpy(char *strDest,const char *strSrc);
代码如下:
#include <stdio.h>#include <iostream>using namespace std;char *MyStrcpy(char *strDest,const char *strSrc){if((strDest==NULL) || (strSrc==NULL)){return NULL;}char *strDestCopy=strDest;while((*strDest++=*strSrc++)!='\0');//后置++优先级高于*,前置++优先级同*return strDestCopy;}int getStrLen(const char *strSrc){int len=0;if (strSrc==NULL){return 0;}while(*strSrc++!='\0'){len++;}return len;}int main(){char strSrc[]="Hello World!";char strDest[20];int len=0;cout<<strSrc<<endl;//printf("strSrc: %s\n",strSrc);len=getStrLen(MyStrcpy(strDest,strSrc));//链式表达式printf("strDest: %s\n",strDest);printf("Len: %d\n",len); return 0;}(2)实现自己的memcpy
memcpy提供了一般的内存复制。即memcpy对于复制的内容没有限制,其用途更加广泛
代码如下:
#include <stdio.h>#include <assert.h>void* MyMemcpy(void *memTo,const void *memFrom,size_t size){assert((memTo!=NULL)&&(memFrom!=NULL));char *tempFrom=(char*)memFrom;char *tempTo=(char*)memTo;while(size-->0){*tempTo++=*tempFrom++;}return memTo;}int main(){char strSrc[]="Hello World!";char strDest[20];MyMemcpy(strDest,strSrc,4);//将strSrc中的前四个字符复制到strDest中strDest[4]='\0';//将strDest中的第五个字符设置为\0;printf("strDest: %s\n",strDest)return 0;}
2、strcpy和memcpy的区别:
(1) 复制的内容不同:strcpy只复制字符串,而memcpy可以复制任意内容,例如:字符数组
整形、结构体、类等。
(2) 复制的方法不同:strcpy不需要指定长度,它遇到字符串结束符“\0”便结束。
memcpy则是根据其第三个参数决定复制的长度。
(3) 用途不同:通常在复制字符串时用strcpy,而需要复制其他类型数据时则
一般用memcpy。
阅读全文
1 0
- 实现自己的strcpy和memcpy
- Strcpy 和 memcpy 实现
- strcpy 和 memcpy两个函数的实现
- strcpy 和 memcpy两个函数的实现
- strcpy和memcpy函数的实现
- strcpy和memcpy的标准实现
- strcpy和memcpy的区别与实现
- strcpy和memcpy函数的实现
- strcpy,strcat,memcpy和memmove的实现
- 不用库函数,自己实现strcpy和memcpy函数
- 不用库函数,自己实现strcpy和memcpy函数
- 不用库函数,自己实现strcpy和memcpy函数;二者的区别
- memcpy和strcpy函数实现
- strcpy以及memcpy的实现
- strcpy/memcpy/memmove的实现
- strcpy/memcpy/memmove的实现
- strcpy,memcpy函数的实现
- strcpy、memcpy函数的实现
- 【CSU 1529】Equator (前缀和,双端队列)
- Spring(1)Ioc和Aop底层原理
- Java异常处理,学习留档
- leetcode 198. House Robber | 动态规划
- 递归和非递归分别实现求n的阶乘
- 实现自己的strcpy和memcpy
- epoll源码剖析
- 二叉搜索树
- java中设置网络代理
- poj 2417 Discrete Logging
- python中的多线程-threading
- HDU 6106 Classes【简单思维】
- Hibernate 使用HQL方法进行模糊查询(3张表联合查询)
- HEVC评测