1. strncpy源码
char *strncpy(char *dest, const char *src, size_t count)
{
char *tmp = dest;
while (count) {
if ((*tmp = *src) != 0)
src++;
tmp++;
count--;
}
return dest;
}
返回dest指针的目的是链式表达式
2. strlen源码
(1)
int myStrlen(const char *str)
{
assert(str != NULL);
int len = 0;
while ((*str++) != '\0') len++;
return len;
}
(2)不带变量,递归方式
int myStrlen(const char *str) { assert(str != NULL); return *str == '\0' ? 0 : (1+myStrlen(++str)); }
3. strcmp源码
int myStrcmp(const char *str1, const char *str2)
{
assert(str1 != NULL && str2 != NULL);
int ret = 0;
while (!(ret=*(unsigned char *)str1 - *(unsigned char *)str2) && *str1)
{
str1++;
str2++;
}
if (ret < 0) ret = -1;
else if (ret > 0) ret = 1;
return ret;
}
4. strcat源码
char *myStrcat(char *strDest, const char *strSrc)
{
char *address = strDest;
assert(strDest != NULL && strSrc != NULL);
while (*strDest) strDest++;
while (*strDest++ = *strSrc++) ;
return address;
}
5. strcpy源码
char *strcpy(char *strDest, const char *strSrc)
{
assert(strDest != NULL && strSrc != NULL);
char *address = strDest;
while ((*strDest++ = *strSrc++) != '\0') ;
return address;
}
6.