int Strlen(const char* str)
{
assert(str);
int nlen = 0;
while(str[nlen])
{
++nlen;
}
return nlen;
}
char* Strcpy(char* strDst, const char* strSource)
{
assert(strDst && strSource);
char *temp = strDst;
while( *strDst++ == *strSource++)
NULL;
return temp;
}
char* Strcat(char* strDst, const char* strSource)
{
assert(strDst && strSource);
size_t nlen = strlen(strDst) + strlen(strSource);
char *temp = new char[nlen + 1];
strcpy(temp,strDst);
strcpy(temp + strlen(strDst),strSource);
strDst = temp;
return temp;
}
int Strcmp(const char* pFirst, const char *pSecond)
{
assert(pFirst && pSecond);
while(*pFirst && *pSecond)
{
if( *pFirst != *pSecond)
return *pFirst > *pSecond ? 1 : -1;
++pFirst;
++pSecond;
}
return strlen(pFirst) - strlen(pSecond);
}
char* Strrev(char *str)
{
assert(str);
char *temp = str;
for ( char *p = str + strlen(str) - 1; str < p; ++str,--p)
{
char temp = *str;
*str = *p;
*p = temp;
}
return temp;
}
int Atoi(const char* str)
{
assert(str);
int flag = 1;
int result = 0;
const char *p = str;
while( isspace(*p) )++p;
if (*p == '+')
{
flag = 1;
++p;
}
else if(*p == '-')
{
flag = - 1;
++p;
}
while( isdigit(*p))
{
result = result*10 + *p - '0';
++p;
}
return flag * result;
}
void Itoa(int value,char str[])
{
assert(str);
const char Digit[] = "0123456789";
char *p = str;
int temp = value;
while (temp)
{
++p;
temp /= 10;
}
*p = '/0';
while(value)
{
--p;
*p = Digit[value%10];
value /= 10;
}
}