memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现
来源:互联网 发布:qq授权软件取消 编辑:程序博客网 时间:2024/05/18 00:01
为区别库函数,函数名首字母大写。
Memcmp函数:
//内存区域内容比较函数 int Memcmp(const void *buf1,const void *buf2,unsigned int count){unsigned int i=0;while(i<count){if( ((char*)buf1)[i]!= ((char*)buf2)[i] )return ((char*)buf1)[i]-((char*)buf2)[i];i++;}return 0;}
Memcpy函数:
//内存的拷贝函数#ifdef size_t //需要定义size_t类型#undef size_t#endif#ifndef size_t#define size_t unsigned int#endifextern void* Memcpy(void *dest,const void * src,size_t n){unsigned int i=0;while(i<n){((char*)dest)[i]=((char*)src)[i];i++;}return dest; // 返回拷贝后的内存指针}
Memmove函数:
/*memmove用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。*///函数原型#ifdef size_t //需要定义size_t类型#undef size_t#endif#ifndef size_t#define size_t unsigned int#endifvoid *Memmove( void *dest, const void *src, size_t count ){int i=0;if(src==dest){}else if(((char*)src+count)>(char*)dest && (char*)src<(char*)dest) // 如果冲突{//从尾部循环赋值i=count-1;while(i>=0){((char*)dest)[i]=((char*)src)[i];i--;}}else{while(i<count){((char*)dest)[i]=((char*)src)[i];i++;}}return dest;}
Memset函数:
//实现memset函数的功能//内存区域初始化操作//函数不能检查出指针越界情况 需要用户自行判断#ifdef size_t //需要定义size_t类型#undef size_t#endif#ifndef size_t#define size_t unsigned int#endifvoid * Memset(void *s,int ch,size_t n){int i=0;while(i<n){*((char*)s+i)=ch; //ch代表ascii码的整数值i++; }return s;}
Strcat函数:
//连接函数//函数并不负责检查str1是否有足够的容量去容纳,需要用户自行判断char * Strcat(char* str1,char* str2){int n=0,p=0;//获取下标while(str1[n]!='\0'){n++;}while(str2[p]!='\0'){str1[n+p]=str2[p];p++;}str1[n+p]='\0';return str1;}
Strcmp函数:
//比较函数int Strcmp(const char* str1,const char* str2) {int i=0;while(str1[i]&&str2[i]&&(str1[i]==str2[i])) //好方法 算法特别精简{i++;}return str1[i]-str2[i];}
Strcpy函数:
//字符串拷贝函数void Strcpy(char* str1,char* str2){int i=0;while(str2[i]!='\0'){str1[i]=str2[i];i++;}str1[i]='\0';}
Strlen函数:
//实现库函数strlen()的功能//函数同一首字母大写 ,以区分库函数#include<assert.h>#ifndef NULL#define NULL ((void*)0)#endifunsigned int Strlen(const char * str){unsigned int length=0;assert(str!=NULL);while(str[length]!='\0'){length++;}return length;}/*---------------递归的形式 但没有断言部分unsigned int Strlen(const char * str){if(*str=='\0')return 0;return 1+Strlen(str+1);}*/
0 0
- memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现
- strcpy,strcmp,strcat,memcpy,memmov,memset,memcmp的实现
- strcpy,strcmp,strcat,memcpy,memmov,memset,memcmp的实现
- c语言中字符串函数strlen()、strcat()、strcpy()、strcmp()及内存操作函数memset()、memcpy()、memcmp()、memmove()的使用及编码实现
- 字符串函数的原型实现(strcpy, strcat, strcmp, memset, memcpy, memmove)
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- mem系列函数(memset memcpy memmove) 和str系列函数(strlen strcpy strcmp strcat strstr strtok)
- strlen,strcpy,strcat,strcmp四个函数的原型,memcpy,memset的实现
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr,
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
- 部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
- 几个常用函数的实现strcpy,memcpy,memmove,strcat,strcmp
- strlen函数 strcpy函数 strcmp函数 strstr函数 strcat函数 memcpy函数 memmove函数 以及字符串反转函数的实现
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 模拟实现strlen,strcpy,strcat,strcmp,strstr,memcpy,memmove
- strlen, strcpy, strcat, strcmp, memset... (字符串操作函数的实现)
- 物尽其用,偷懒有理(来封装一个ListView)
- 深入理解java异常处理机制
- git使用tortoisesvn为合并工具-----我的.gitconfig文件
- jQuery_ajax实现检查用户名是否已注册
- 51单片机中断详解(下)
- memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现
- 欢迎使用CSDN-markdown编辑器
- IO设计模式:Reactor和Proactor对比
- Linux命令英文全称
- 【Android导航 千里之行 始于足下】问题总结
- 关于androidstudio创建aidl文件的疑惑
- vbs函数大全
- 欢迎使用CSDN-markdown编辑器
- GetLastError错误码