字符串操作函数
时间久了忘了,自己写一遍
(*¯︶¯*)
一、strlen 计算字符串长度
1 size_t mystrlen(const char *s){ 2 assert(s!=NULL); 3 size_t len=0; 4 while(*s!='\0'){ 5 s++; 6 len++; 7 } 8 return len; 9 }
二、strcpy strncpy 字符拷贝
1 char * mystrcpy(char *dest,const char *src){ 2 assert(dest!=NULL&&src!=NULL); 3 char * pdest=dest; 4 while(*src!='\0'){ 5 *dest=*src; 6 dest++; 7 src++; 8 } 9 *dest='\0'; 10 return pdest; 11 }
1 char *mystrncpy(char *dest, const char *src,size_t n){ 2 assert(dest!= NULL && src != NULL); 3 char *pdest = dest; 4 while(n--&&*src!='\0'){ 5 *dest=*src; 6 dest++; 7 src++; 8 } 9 *dest='\0'; 10 return pdest; 11 }
三、strcat strncat字符追加
1 char* mystrcat(char *dest,const char *src){ 2 assert(dest != NULL && src !=NULL); 3 char *pdest=dest; 4 while(*dest != '\0'){ 5 dest++; 6 } 7 while(*src != '\0'){ 8 *dest = *src; 9 dest++; 10 src++; 11 } 12 *dest='\0'; 13 return pdest; 14 }
1 char *mystrncat(char *dest,const char *src,size_t n){ 2 assert(dest != NULL&& src != NULL); 3 char *pdest=dest; 4 while(*dest != '\0'){ 5 dest++; 6 } 7 while(n-- && *src != '\0'){ 8 *dest = *src; 9 dest++; 10 src++; 11 } 12 *dest = '\0'; 13 return pdest; 14 }
四、strcmp strncmp字符比较
1 int mystrcmp(const char *s1,const char *s2){ 2 assert(s1 != NULL && s2 != NULL); 3 while(*s1 != '\0' && *s2 != '\0' && *s1 == *s2){ 4 s1++; 5 s2++; 6 } 7 return *s1 - *s2; 8 }
1 int mystrncmp(const char *s1,const char *s2,size_t n){ 2 assert(s1 != NULL && s2 != NULL); 3 while(n-- && *s1 != '\0' && *s2 != '\0' && *s1 == *s2){ 4 s1++; 5 s2++; 6 } 7 return *s1 - *s2; 8 }
五、memcpy 内存拷贝
1 void * mymemcpy(void *dest,const void * src,size_t n){ 2 assert(dest != NULL && src != NULL); 3 char *pdest=(char *)dest; 4 char *psrc=(char *)src; 5 while(n>0){ 6 *pdest=*psrc; 7 pdest++; 8 psrc++; 9 n--; 10 } 11 return dest; 12 }