strcpy,strcmp,strcat,memcpy,memmov,memset,memcmp的实现
来源:互联网 发布:微电影编辑软件 编辑:程序博客网 时间:2024/05/02 10:46
- <span style="font-size:18px">// [11/10/2013 qingezha] 直接拷贝,不考虑覆盖问题,效率优先
- char* strcpy_my(char * dest,char * src) // 实现src到dest的复制
- {
- if(!src||!dest)
- return NULL;
- char* stedest = dest; //保存目标字符串的首地址
- while ((*dest++ = *src++)!='\0'); //这里是把结束符也复制进去了!!!!!!!!!!
- return stedest; //把src字符串的内容复制到dest下
- }</span>
strcpy 只针对字符,而memcpy针对内存,不管里面存放的是啥内容,可以拷贝内建类型与自定义类型,其他与strcpy一样,不考虑覆盖问题
- // [9/22/2013 qingezha] 注意指针类型要转换,不能对void 类型进行++运算
- // 但当源内存和目标内存存在重叠时,memcpy会出现错误,
- // 而memmove能正确地实施拷贝,但这也增加了一点点开销。
- void * my_memcpy(void *des, void *src, size_t count)
- {
- if(des == NULL || src == NULL || count <= 0)
- return NULL;
- char *dess = (char *)des; //这里要类型转换
- char *srcs = (char *)src;
- char *ret = dess;
- int temp = count;
- while(count)
- {
- *dess++ = *srcs++;
- --count;
- }
- *(ret + temp) = '\0';
- return ret;
- }
- // [9/24/2013 qingezha] 判断地址重叠
- void * my_memmov(void *dest, void *src, size_t n)
- {
- {
- char* d = (char*) dest;
- const char* s = (const char*) src;
- if (s>d) //目的地址在前面,从头复制
- {
- while (n--)
- *d++ = *s++;
- }
- else if (s<d) //目的地址在后面,从尾部复制
- {
- d = d+n-1;
- s = s+n-1;
- while (n--)
- *d-- = *s--;
- }
- return dest;
- }
- }
- // [11/10/2013 qingezha]
- void* my_memset(char *ch,char c,size_t n)
- {
- if(ch==NULL || n<=0)
- return ch;
- for (int i=0;i<n;i++)
- {
- ch[i]=c;
- }
- return ch;
- }
memcmp比较内存中对应值的大小
- int my_memcmp(const void *buf1,const void *buf2,size_t count)
- {
- if (buf1==NULL||buf2==NULL||count<=0)
- {
- return 0;
- }
- while(count--&&*(char*)buf1==*(char*)buf2)
- {
- buf1=(char*)buf1+1;
- buf2=(char*)buf2+1;
- }
- return *(char*)buf1-*(char*)buf2;
- }
strcat字符连接
- // [11/10/2013 qingezha]
- char * my_strcat(char *des,const char *src)
- {
- if (des==NULL||src==NULL)
- {
- return des;
- }
- char *ch = des;
- while(*ch)
- ch++;
- while(*ch++=*src++);
- return des;
- }
strcmp 字符串比较
- // [11/10/2013 qingezha]
- int my_strcmp(const char *des,const char *src)
- {
- int dis=0;
- while(!(dis=*des-*src)&&*des&&*src)//相同的时候继续比较
- {
- src++;
- des++;
- }
- if (dis>0)
- {
- dis = 1;
- }
- else
- {
- dis = -1;
- }
- return dis;
- }
0 0
- strcpy,strcmp,strcat,memcpy,memmov,memset,memcmp的实现
- strcpy,strcmp,strcat,memcpy,memmov,memset,memcmp的实现
- memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现
- atoi itoa strcpy strcmp strlen strcat memcpy memset实现
- strcpy memcpy strcat strcmp memset strlen
- strcpy(),strncpy(),strcmp(),strcat(),memset(),memcpy(),atoi(),
- strlen,strcpy,strcat,strcmp四个函数的原型,memcpy,memset的实现
- 字符串函数的原型实现(strcpy, strcat, strcmp, memset, memcpy, memmove)
- strcpy/strcmp/memcpy/memcmp/strstr/ 的内部实现(转载)
- c语言中字符串函数strlen()、strcat()、strcpy()、strcmp()及内存操作函数memset()、memcpy()、memcmp()、memmove()的使用及编码实现
- memmove, memcmp ,strcat, strcmp ,memcpy
- strlen, strcpy, strcat, strcmp, memset... (字符串操作函数的实现)
- C基础:strcat,strcmp,memcpy,strcpy等函数的实现
- 微软strcpy,strcat和strcmp、memcpy的实现源代码
- 几个常用函数的实现strcpy,memcpy,memmove,strcat,strcmp
- strcat,strcmp,memcpy,strcpy等函数的实现
- strcpy,strcmp,strstr,strcat,memcpy,memmove的模拟实现
- strlen,strcpy,strcat,strcmp,strstr,memcpy,的模拟实现方式
- 【iOS学习笔记】远程推送
- UITableView删除的时候崩溃NSScanner:nil string argument
- 简要描述:哥德巴赫猜想
- Linux Samba服务器的安装
- 怎么编辑好的ppt转换成pdf格式
- strcpy,strcmp,strcat,memcpy,memmov,memset,memcmp的实现
- 【Spring】Spring3.0.5的下载、配置与Helloworld
- 【iOS学习笔记】通过自定义的URL Scheme启动你的App
- Codeforces Round #302 (Div. 2) -- (A,B,C)
- 黑马程序员——Java基础———网络编程
- 无水印好用Flash头像编辑器组件
- Hibernate4之getCurrentSession和openSession
- Git常用命令速查表
- Java垃圾回收(一) 内存回收简介