C字符串操作函数实现

来源:互联网 发布:sql数据库管理系统 编辑:程序博客网 时间:2024/05/29 02:37

 

//strcpychar* mystrcpy(char * dst, const char *src){assert((dst != NULL) && (src != NULL));char *retAddr = dst;while((*(dst++) = *(src++)) != '\0');return retAddr;}

 

//strncpychar * mystrncpy(char *dst, char *src, size_t size){assert((dst != NULL) && (src != NULL));int i = 0;char *retAddr = dst;//while((*(dst++) = *(src++)) && ((++i) < size));//注意++i,不是i++while(((i++) < size) && (*(dst++) = *(src++)));//注意i++,不是++ireturn retAddr;}

 

//strlenint mystrlen(const char* str){assert(str!=NULL);int len = 0;while(*str != '\0'){str++;len++;}return len;}

 

//strcatchar * mystrcat(char *dst, char *src){assert(src != NULL);char *retAddr = dst;while(*dst != '\0'){dst++;}while(*src != '\0'){*dst++ = *src++;}++dst = '\0';return retAddr;}


 

//strchrchar * mystrchr(char *str, char c){assert(str != NULL);char* retAddr = str;while(*retAddr != '\0'){if (*retAddr == c){return retAddr;}retAddr++;}return NULL;}


 

//strcmpint mystrcmp(char *str1, char *str2){assert((str1 != NULL) && (str2 != NULL));while((*str1 == *str2) && (*str1 != '\0') && (*str2 != '\0')){str1++;str2++;}return *str1 - *str2;}


 

//strncmpint mystrncmp(char *str1, char *str2, size_t size){assert((str1!=NULL) && (str2!=NULL));while((*str1 == *str2) && (*str1 != '\0') && (*str2 != '\0')){str1++;str2++;}return *str1 - *str2;}


 

//strstrchar * mystrstr(char* dst, char* src){//条件判断特殊情况int idst = 0, isrc = 0, idstTemp = 0, isrcTemp = 0;while (dst[idst] != '\0'){idstTemp = idst;isrcTemp = 0;while (src[isrcTemp] == dst[idstTemp]){idstTemp++;isrcTemp++;}if (src[isrcTemp] == '\0'){return dst+idst;}idst++;}return dst;}


 

//memsetvoid * mymemset(void *buffer, int ch, size_t size){assert(buffer != NULL);char *retAddr = (char*)buffer;while (size-- > 0){*(retAddr++) = (char)ch;}return retAddr;}