////////////////////////////////////////////////////////
/// 模拟实现stlen,strcmp,strcat, strcpy, strncat, strncpy
//////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <assert.h>
using namespace std;
int myStrlen_1(const char* src)
{
assert(src);
int len = 0;
while((*src++) != '\0')
++len;
return len;
}
//////////////不使用变量
int myStrlen_2(const char* src)
{
assert(src);
return *src != '\0' ? 0:(myStrlen_2(++src) + 1);
}
int myStrcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
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;
}
char *myStrcat(char* dest, const char* src)
{
char *str = dest;
assert(dest && src);
while(*dest)
++dest;
while (*dest++ = *src++);
return str;
}
char *myStrncat(char *dest, const char *src, int n)
{
char *str = dest;
assert(dest && src);
while(*dest)
++dest;
while (n-- && *src)
*dest++ = *src++;
*dest = '\0';
return str;
}
char *myStrcpy(char *dest, const char *src)
{
assert(dest && src);
char *str = dest;
while (*dest++ = *src++);
return str;
}
char *myStrncpy(char *dest, const char *src, int n)
{
char *str = dest;
assert(dest && src);
while (*src && n--)
*dest++ = *src++;
while (n--)
*dest++ = '\0';
return str;
}
模拟实现stlen,strcmp,strcat, strcpy, strncat, strncpy
最新推荐文章于 2023-06-27 21:07:40 发布