以下为实现,我写的不太好。
char* Pfindkey(const char*src,const char*key)
{
int n=strlen(key);
int size=n*sizeof (char*);
char**p=(char**)malloc(size);
memset(p,0,size);
if(NULL==p)return NULL;
size=n-1;
int i;
char *o=src+size;
start: i=size;
p[i]=strchr(o,key[i]);
o=p[i]-1;
for(--i;i>-1;--i,--o)
{
p[i]=strchr(o,key[i]);
if(NULL==p[i])return NULL;
if( p[i]>=p[i+1] )
{
o=p[i]+size-i;
goto start;
}
}
free(p);
return o+1 ;
}