有时候突然让自己写这些代码,却写不出来或者写不正确或者写的有缺陷,这真心让自己覺得非常搓!所以花了點時間重新自己實現一遍!!!!!!错误处理仅仅检查输入指针空则抛出异常,自己測試過,但也許還是會有bug。以下代码仅供自己参考,若要非常非常准确代码,请君自行百度之 ~
//src长度大于dest长度会导致程序崩溃
char* re_strcpy(char* dest, const char* src)
{
if(!dest || !src) throw "Invalid Argument!";
char* retAddr = dest;
while( *dest++ = *src++ );
return retAddr;
}
//一般没有问题
unsigned int re_strlen(const char* str )
{
if (!str) throw "Invalid Argument!";
int nLength = 0;
while(*str++) ++nLength;
return nLength;
}
char* re_strstr( const char* str1, const char* str2 )
{
if(!str1 || !str2) throw "Invalid Argument!";
char* pStr1 = (char*)str1;
char* pStr2 = (char*)str2;
while(*str1)
{
for ( ; *str1 && *str2 && *str1 == *str2; ++str1, ++str2);
if (*str2 == 0) return pStr1;
str1 = ++pStr1;
str2 = pStr2;
}
return 0;
}
int re_strcmp( const char* str1, const char* str2 )
{
if (!str1 || !str2) throw "Invalid Argument!";
int retValue = 0;
while( !( retValue = *str1 - *str2 ) && *str1++ && *str2++ );
if (retValue > 0)
{
retValue = 1;
}
else if (retValue < 0)
{
retValue = -1;
}
return retValue;
}
//dest+src的长度过长会导致程序崩溃
char* re_strcat( char* dest, const char* src )
{
if(!dest || !src) throw "Invalid Argument!";
char* retAddr = dest;
while(*dest) ++dest;
while( *dest++ = *src++);
return retAddr;
}