Also strstr() könntest du etwa so implementieren:
Code:
char * strstr(char * text, const char * subtext)
{
unsigned int i = 0, j = 0;
bool found = false;
while(text[i])
{
if(text[i] == subtext[0])
{
while(subtext[j])
{
found = true;
if(subtext[j] != text[i+j])
{
found = false;
break;
}
j++;
}
if(found)
return text+i;
}
i++;
}
return NULL;
}
Wobei ich mir sicher bin, dass ich in meiner grenzenlosen Inkompetenz nicht den besten Weg gewählt habe.
Die Funktion kann man nun mit ein wenig Korrektur einfach in dein Ausgangsproblem überführen.
Code:
int anzahl(const char * subtext, const char * text)
{
unsigned int i = 0, j = 0, zaehler = 0;
bool found = false;
while(text[i])
{
if(text[i] == subtext[0])
{
while(subtext[j])
{
found = true;
if(subtext[j] != text[i+j])
{
found = false;
break;
}
j++;
}
if(found)
zaehler++;
}
i++;
}
return zaehler;
}
Wobei hier analog zu oben gilt, es gibt unter Umständen bessere Lösungen.
Gruß!