- strlen
- strcpy
- strcmp
- strcat
- strncpy
- strncmp
- strncat
strlen
返回字符串长度,不计算’\0’
int my_strlrn(const char *str)
{
assert(str != NULL);
int len = 0;
while (*str++ != '\0')
{
len++;
}
return len;
}
strcpy
拷贝字符串
char *my_strcpy(char *dst, const char *src)
{
assert((dst != NULL)&&(src != NULL) )
while ((*dst++ = *src++) != '\0') ;
return dst;
}
strcmp
比较两个字符串str1,str2,相同输出0,str1 < str2反回-1,str1 > str2返回1
int my_strcmp(const char *str1, const char *str2)
{
assert((str1 != NULL)&&(str2 != NULL));
int ret = 0;
while (ret = (*(unsigned char *)str1++) - (*(unsigned char *)str2++)
&& *str1 != '\0' )
{
if ( ret = 0)
{
return 0;
}
else if(ret < 0)
{
return -1;
}
else
{
return 1;
}
}
}
strcat
字符串拼接函数
char *my_strcat(char *dst, const char *src)
{
assert((dst != NULL)&&(src != NULL));
char *tmp = dst;
while (*tmp != '\0')
{
tmp++;
}
while ((*tmp++ = *src++) != '\0') ;
return dst;
}
strncpy
拷贝字符串前n位
char *my_strncpy(char *dst, const char *src, size_t len)
{
assert((dst != NULL)&&(src != NULL) )
char *tmp = dst;
while(len--)
{
*dst++ = *src++;
}
return dst;
}
strncmp
比较字符串前n位
int my_strcmp(const char *str1, const char *str2, size_t n)
{
assert((str1 != NULL)&&(str2 != NULL));
int ret = 0;
while (ret = (*(unsigned char *)str1++) - (*(unsigned char *)str2++)
&& n-- && *str1 != '\0' && *str2 != '\0')
{
if (ret < 0)
{
return -1;
}
if (ret > 0)
{
return 1;
}
}
if (*str1 == '\0' && *str2 != '\0')
{
return -1;
}
if (*str1 != '\0' && *str2 == '\0')
{
return 1;
}
return 0;
}
strncat
在字符串结尾拼接n个字符
char *my_strncat(char *dst, const char *src, size_t n)
{
assert((str1 != NULL)&&(str2 != NULL));
char *res = dst;
while(*res++ != '\0') ;
while (n-- && (*res++ = *src++)!='\0') ;
return res;
}