字符串库函数strlen,strcmp,strcpy,strncpy,strcat,strncat自定义实现

来源:互联网 发布:微信小程序java源代码 编辑:程序博客网 时间:2024/04/29 03:08
size_t strlen(const char* str){assert(str!=NULL);size_t length=0;while((*str++)!='\0')++length;return length;}

不用变量,递归实现的strlen

size_t strlen(const char* str){assert(str!=NULL);return *str=='\0'?0:1+strlen(++str);}

int strcmp(const char* str1,const char* str2){assert(str1!=NULL&&str2!=NULL);int ret=0;while(!(ret=*str1-*str2)&&*str1){++str1;++str2;}if(ret<0)ret=-1;else if(ret>0)ret=1;return ret;}
char* strcpy(char* strDest,const char* strSrc){assert(strDest!=NULL&&strSrc!=NULL);char* address=strDest;while(*strDest++=*strSrc++);return address;}


char* strncpy(char* strDest,const char* strSrc,size_t n){assert(strDest!=NULL&&strSrc!=NULL&&n>0);char* address=strDest;for(size_t i=0;i<n;i++){if(*strSrc=='\0')break;*strDest++=*strSrc++;}*strDest='\0';return address;}

char* strcat(char* strDest,const char* strSrc){assert(strDest!=NULL&&strSrc!=NULL);char* address=strDest;while(*strDest!='\0')++strDest;while(*strDest++=*strSrc++);return address;}

char* strncat(char* strDest,const char* strSrc,size_t n){assert(strDest!=NULL&&strSrc!=NULL&&n>0);char* address=strDest;while(*strDest!='\0')++strDest;for(int i=0;i<n;i++){if(*strSrc=='\0')break;*strDest++=*strSrc++;}*strDest='\0';return address;}




0 0
原创粉丝点击