strstr: Zeiger auf letztes Vorkommen von substring in string mit strstr()
-
Hallo,
Ich habe hier ein ein Programm, welches mir die Häufigkeit eines substrings in einem gegebenen string ermittelt.
Die Aufgabe an der ich scheitere ist, statt der Häufigkeit des substrings einen Zeiger auf das letztemalige Vorkommen vom substring im string zurückzugeben.
(Ich soll kein neues Programm schreiben, sondern nur das jetzige abändern)Also ich möchte, dass printf mir den Satz ab dem letzten Auftreten von 'li' ausgibt.
Am Bildschirm sollte dann ausgegeben werden: "lieben"
Habe schon einige Sachen probiert, aber war kein so großer erfolg.
Deswegen wäre es nett wenn jemand einen Vorschlag machen würde.
#include <stdio.h>
#include <string.h>int anzahl(char *string, char *substring);
int main(void)
{
char *sub="li" , *st="Milli liebt es zu und lieben";
printf("'%s' kommt %d mal in ---- '%s' ---- vor\n", sub, anzahl(st,sub), st);}
int anzahl(char *string, char *substring)
{
int i=0;
char *z;
z= string;
while(z)
if(z=strstr(z,substring))
{
i++;
z++;
}
return i;
}
-
char *sub="li" , *st="Milli liebt es zu und lieben"; char *lastpointer = laststrstr(st,sub); printf("%s",text1);
char *laststrstr(char *s1, const char *s2) { char *p = NULL; char *prev = NULL; assert(s1); while(*s1++) { p = strstr(s1,s2); if(p) { s1 = p + strlen(s2); // gefunden? weitersuchen.. prev = p; } else { s1 = prev; return s1; // pointer auf letztes vorkommen zurückgeben } } return NULL; }
-
printf("%s",lastpointer);
Natürlich gehört hier lastpointer und nicht text1! my error