- char* strcpy(char * dst, const char * src)
- {
- char * cp = dst;
- while( *cp++ = *src++ )
- ; /* Copy src over dst */
- return( dst );
- }
- char* strcat ( char * dst , const char * src )
- {
- char * cp = dst;
- while( *cp )
- cp++; /* find end of dst */
- while( *cp++ = *src++ ) ; /* Copy src to end of dst */
- return( dst ); /* return dst */
- }
- int strcmp ( const char* src, const char* dst )
{
int ret = 0 ;
while( !(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
char* strstr(char* src, char* dst)
{
ASSERT(src);
ASSERT(dst);
//calculate the each size
char *szSrc=src,*szDst=dst;
int nSrcSize=strlen(szSrc), nDstSize=strlen(szDst);
//判断是否有目标是否超过
if (nSrcSize<nDstSize)
{
return NULL;// error
}
//
int nCompareCount=nSrcSize-nDstSize+1;
int i,j;
for (i=j=0; i<nSrcSize && j<nDstSize; ++i)
{
if (src[i]!=dst[j])
{
if (i==nCompareCount-1)// 判断剩下是否有足够长的字符串
{
return NULL;//没有
}
j=0;
}
else// to find the first same value
{
++j;
}
}
if (j==nDstSize)//找到相同的
{
return &src[i-nDstSize];// have substring
}
return NULL;// no substring
}