strstr:
// strstr
#include <stdio.h>
char *Strstr(const char *strLong, const char *strShort)
{
char *cp = (char *)strLong; // cp是当前strShort的头在strLong中的位置
char *pL = NULL;
char *pS = NULL;
if ('\0' == *strShort)
return (char *)strLong;
while ('\0' != *cp)
{
pL = cp;
pS = (char *)strShort;
while ( ('\0' != *pL) && ('\0' != *pS) && (*pL == *pS) )
{
pL++;
pS++;
}
if ('\0' == *pS) // strShort比完了
return cp;
cp++; // 不匹配或strLong比完了而strShort还没比完
}
return NULL;
}
int main(int argc, char **argv)
{
char str[] = "lazy";
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] = " 1 2 3 4 5";
char fmt2[] = "12345678901234567890123456789012345678901234567890";
char *pdest = NULL;
int result = 0;
printf( "String to be searched:\n\t%s\n", string );
printf( "\t%s\n\t%s\n\n", fmt1, fmt2 );
pdest = Strstr( string, str );
result = pdest - string + 1;
if( pdest != NULL )
printf( "%s found at position %d\n\n", str, result );
else
printf( "%s not found\n", str );
return 0;
}
用的是暴力的字符串匹配算法。