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]; value /= 10; }}