strcpy,memcpy,memmove,memset
来源:互联网 发布:php棋牌游戏源码下载 编辑:程序博客网 时间:2024/05/17 00:04
/*strcpy实现,注意:1、只能实现字符串的copy2、注意函数中参数,第二个有const3、注意返回为char*,以实现链式表达式4、简洁的赋值写法,注意别把=写成了==*/char* MyStrcpy(char* dest,const char* source){if(dest==NULL||source==NULL)return NULL;char* strDest=dest;while((*strDest++=*source++)!='\0');return dest;}
/*memcpy实现,注意:1、memcpy是要保证内存区域不发生覆盖的基础上copy2、注意函数的参数的类型,void*为返回值,参数为void*和const void*第三个参数决定了复制的长度3、最后返回dst,不要手贱加上'\0'*/void* MyMemcpy(void* dest,const void* source,size_t size){if(dest==NULL||source==NULL||size<=0)return NULL;char* pdest=(char*)dest;char* psource=(char*)source;assert(!((pdest>psource)&&(psource+size>pdest)));while(size--){*pdest++=*psource++;}return dest;}
/*memmove同上的主要区别是保证即使内存重叠了,目的地址也能被拷贝正确*/void* Mymemmove(void* dest,const void* source,size_t size){if(dest==NULL||source==NULL||size<=0)return NULL;char* pdest=(char*)dest;char* psource=(char*)source;if((pdest>psource)&&(psource+size>pdest)){pdest+=size-1;psource+=size-1;while(size--){*pdest--=*psource--;}}else{ while(size--){ *pdest++=*psource++;}}return dest;}
/*strcmp函数注意:1、返回值为int型,str1大于str2返回正数,相等返回0,小于返回负数2、形参为const char*型3、检查指针有效性4、注意代码简洁性*/int mystrcmp(const char *str1, const char *str2){ assert(str1 != NULL && str2 != NULL); if(str1 == str2){ return 0; } // 这里的*str1和*str2都必须有,网上有的只检查str1,是错误的!!! // while(*str1 && *str1++ == *str2++); //error while(*str1 && *str2 && (*str1++ == *str2++)); return *str1 - *str2; }
/*1、注意返回为void*2、形参为void*,char c,和size_t 类型的size3、指针有效性的判断4、简洁性*/void* Mymemset(void* buffer,int c,size_t size){assert(buffer!=NULL);char* pbuffer=(char*)buffer;while(size--){*pbuffer++=(char)c;}return buffer;}
0 0
- memset,strcpy memcpy memmove
- strcpy,memcpy,memmove,memset
- memset,memcpy,strcpy,memmove,memccpy
- strcpy,memcpy,memmove,memset,strncpy
- strcpy,memcpy,memmove,memset,strncpy
- strcpy,memcpy,memmove,memset,strncpy
- strcpy,memcpy,memmove,memset,strncpy
- memset,memcpy与memmove,strcpy
- memset(),memcpy(),memccpy(),memmove(),bcopy(),strcpy(),strncpy()
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- [转]strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- strcpy()、memcpy()、memmove()、memset()的实现
- iOS 7 页面布局
- Android Touch事件分发过程
- 在分组情况下,同一个字段不相同的SQL
- 代码片段
- 传真文档自动化处理的应用实例
- strcpy,memcpy,memmove,memset
- Java多线程基础学习
- 养成良好的项目文件上传习惯
- 随机验证码(线条,旋转,干扰线)
- 简化PHP开发的10个工具
- 启用QNX系统,海尔智能冰箱或成业界“宝马”
- typedef函数指针用法 assert()
- JavaScript Scope( 作用域 ) , Scope chain( 作用域链 )
- 编写类String 的构造函数、析构函数和赋值函数