/* *实现字符串拷贝 *为什么要返回char*?(为了支持链式表达式,如strlen(strcpy(p,q)求复制后的长度)) */ char* strcpy(char* strDest,const char* strSrc){ if(strDest==NULL||strSrc==NULL) return NULL; char* strDestCopy=strDest; //保存字符串首地址 while((*strDest++=*strSrc++)!='\0'); return strDestCopy; }
/* *实现内存拷贝 */ #include <assert.h> void* memcpy(void* memTo,const void* memFrom,size_t size){ assert((memTo!=NULL)&&(memFrom!=NULL)); //必须保证有效 char* tempTo=(char*)memTo; char* tempFrom=(char*)memFrom; while(size-->0){ *tempTo++=*tempFrom++; } return memTo; }
strcpy和memcpy的区别: (1)复制的内容不同,strcpy只能复制字符串,而memcpy可以复制任意内容; (2)复制的方法不同,strcpy不需要指定长度; (3)用途不同,字符串复制时用strcpy,复制其他类型数据时,一般使用memcpy。
strcmp实现: [cpp] view plain copy int strcmp(const char* src,const char* dst){ assert((src!=NULL)&&(dst!=NULL)); while(*src!='\0'&&*dst!='\0'&&*src++==*dst++); int ret=*src-*dst; if(ret>0) return 1; else if(ret==0) return 0; else return -1; }