?
hier mal 'n kleines beispiel, das die bytefolge 1,2,3 im speicher sucht und falls gefunden, die beiden bytes danach ausgibt. es wird so lange im source-array gesucht, bis nichts mehr gefunden wird. wahrscheinlich nicht ganz fehlerfrei, aber vielleichts hilfts dir:
char *find (char *what, int whatlen, char* src, int srclen)
{
char idx = 0;
char *max = src + srclen;
for (;src<max;)
{
if (what[idx] == *src)
{
idx++;
if (idx == whatlen)
return src+1;
}
else if (idx != 0)
{
idx = 0;
continue;
}
src++;
}
return 0;
}
int main ()
{
char test[] = {0,1,1,2,1,2,3,4,5,6,1,2,9,8,1,2,3,100,101,6,2,1,2,3,1,2};
char what[] = {1,2,3};
char *f = test;
for (;;)
{
int len = sizeof(test) - (f-test);
f = find (what, sizeof(what), f, len);
if (!f)
break;
printf ("%d %d\n", f[0], f[1]);
}
return 0;
}