不使用库函数、自己编写的(strlen、strcpy、strcmp、strcat、memcmp、memcpy、memmove)

2023-02-17,,,,

不使用库函数、自己编写的(strlen、strcpy、strcmp、strcat、memcmp、memcpy、memmove)

 //求字符串长度的函数
int my_strlen(const char* pStr)
{
assert(pStr != NULL);
int length = ;
while (*pStr++ != '\0')
{
length++;
}
return length;
}
//字符串拷贝函数
char* my_strcpy(char* strDest, const char* strSrc)
{
assert(strDest != NULL && strSrc != NULL);
char* pDest = strDest; //保护参数
const char* pSrc = strSrc;
while (*pSrc != '\0')
{
*pDest++ = *pSrc++;
}
//*pDest = '\0';
return strDest;
}
//字符串比较函数
int my_strcmp(const char* strDest, const char* strSrc)
{
assert(strDest != NULL && strSrc != NULL);
if (*strDest == '\0'&&*strSrc != '\0')
{
return ;
}
const char* pDest = strDest;
const char* pSrc = strSrc;
int result = ; //用于记录比较结果
while (*pDest != '\0' || *pSrc != '\0')
{
if ((result = *pDest - *pSrc) != )
{
break;
}
pDest++;
pSrc++;
}
if (result > )
{
result = ;
}
else if (result<)
{
result = -;
}
return result;
}
//字符串连接函数
char* my_strcat(char* strDest, char* strSrc)
{
assert(strDest != NULL && strSrc != NULL);
char* pDest = strDest;
char* pSrc = strSrc;
while(*pDest != '\0')
{
pDest++;
}
while (*pSrc != '\0')
{
*pDest++ = *pSrc++;
}
*pDest = '\0';
return strDest;
} //内存比较函数
int my_memcmp(void* src1, void* src2, int len)
{
assert(src1 != NULL && src2 != NULL);
const char* pSrc1 = (char*)src1;
const char* pSrc2 = (char*)src2;
while (len-- > )
{
if (*pSrc1++ != *pSrc2++)
{
return *pSrc1 < *pSrc2 ? - : ;
}
}
return ;
} //内存拷贝函数
void* my_memcpy(void* dest, const void* src, size_t count)
{
assert(dest != NULL && src != NULL);
char* pDest = (char*)dest;
const char* pSrc = (const char*)src;
while (count-- > )
{
*pDest++ = *pSrc++;
}
return dest;
} //内存移动函数
void* my_memmove(void* dest, void* src, size_t count)
{
assert(dest != NULL && src != NULL);
char* pDest = (char*)dest;
const char* pSrc = (char*)src;
     if (pSrc >= pDest || pDest >= (pSrc + count))
{     while (count-- > )
{
*pDest++ = *pSrc;
}
}
else
 {
while (count-- > ) { *(pDest + count) = *(pSrc + count);
}
}
*pDest = '\0';
return dest;
}

不使用库函数、自己编写的(strlen、strcpy、strcmp、strcat、memcmp、memcpy、memmove)的相关教程结束。

《不使用库函数、自己编写的(strlen、strcpy、strcmp、strcat、memcmp、memcpy、memmove).doc》

下载本文的Word格式文档,以方便收藏与打印。