strcpy:
C语言标准库函数strcpy,把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间。
char* my_strcpy(char* dst, const char* src)
{
assert(dst);
assert(src);
char* ret = dst;
while (*dst++ == *src++)
{
}
return ret;
}
strncpy:
把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回dest。
char* my_strncpy(char* dst, const char* src,int n)
{
assert(dst);
assert(src);
char* ret = dst;
while (n)
{
*dst++ = *src++;
--n;
}
*dst = '\0';
return ret;
}
strcat:
strcat(dest,src)是把src所指字符串添加到dest结尾处(覆盖dest结尾处的‘\0’),src和dest所指内存区域不可以重叠,所以dest必须有足够的空间来容纳。最后结果返回的是指向dest的指针。
char* my_strcat(char* dst, const char* src)
{
assert(dst);
assert(src);
char* ret = dst;
//找到dst末尾的'\0'
while (*dst)
{
dst++;
}
//把src连接到dst后面
while (*src)
{
*dst++ = *src++;
}
return ret;
}
strncat:
char* my_strncat(char* dst, const char* src, int n)
{
assert(dst);
assert(src);
char* ret = dst;
while (*dst)
{
dst++;
}
while (n--)
{
*dst++ = *src++;
}
return ret;
}
strcmp:
//模拟实现strcmp
//str1>str2,返回正数;
//str1<str2,返回负数;
//str1=str2,返回0;
//逐个字符比较ASCII值
int my_strcmp(const char* str1, const char* str2)
{
assert(str1);
assert(str2);
while (*(str1) == *(str2))
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2)
return 1;
else
return -1;
}
strncmp:
int my_strncmp(const char* str1, const char* str2,int n)
{
assert(str1);
assert(str2);
while (n)
{
if (*str1 == *str2)
{
str1++;
str2++;
}
else
{
return *str1 - *str2;
}
n--;
}
return 0;
}