A
Am besten änderst du dazu die Funktion teilst() folgendermaßen um:
char *teilst(char *in, // Inputstring
char *out, // Outputstring
char *pattern, // zu suchendes Pattern
int Anzahl) // Anzahl zu kopierender Characters
//Rückgabewert ist die Stelle, an der pattern im Inputstring gefunden wurde (Zeiger)
//Wenn pattern nicht gefunden wurde, dann wird NULL (0) zurückgegeben
{
char * test;
test=strstr (in,pattern);
if (NULL == test)
return NULL; // not found
else
strncpy(out,test,Anzahl);
return test;
}
Nun musst du die Funktion in eine Schleife einbauen, die überprüft, ob teilst() den Suchstring gefunden hat. Der Parameter für den Inputstring sollte dann allerdings immer ein Zeiger (ich nenn ihn jetzt mal akt) auf die hinter der zuletzt gefundenen Stelle sein.
Du musst also vor der Schleife noch einen Zeiger auf deinen bisherigen Inputstring setzen. Dann in der Schleifenbedingung teilst() aufrufen und den Rückgabewert in einer Variablen speichern und auswerten. Wenn der Suchstring gefunden wurde, dann machst du deinen Code, der in dem Fall gemacht werden muss und setzt dann deinen Zeiger akt auf den gemerkten Rückgabewert von teilst() + 1 (bzw. die Länge des Suchstrings; wie es dir beliebt).
Somit wanderst du im String immer weiter nach hinten, bis der Suchstring eben nicht mehr gefunden werden kann.