strstr länge angeben
-
Hallo,
gibt es eine String-Funktion ähnlich wie strstr, bei der ich aber die Länge angeben kann, innerhalb die Funktion nach dem zweiten String suchen soll?
z.B. string1 = "char ist ein char" und string2 = "ein" (zu suchender string)
und als Länge = 5-> der String "ein" soll nur innerhalb der ersten 5 Zeichen im string1 gesucht werden.
Gruß
Hans Im Glück
-
Hi,
dafür kannst du strncmp nehmen.Gruß,
B.B.
-
Äh, strncmp vergleicht doch immer ab erstem Zeichen?!
Also selber schreiben:const char* mystrstr(const char *str1, const char *str2, size_t length) { char *ptr; char *tmp = malloc(length + 1); strncpy(tmp, str1, length); tmp[length] = '\0'; ptr = strstr(tmp, str2); if(ptr) ptr = str1 + (ptr - tmp); free(tmp); return ptr; }
-
Belli schrieb:
Äh, strncmp vergleicht doch immer ab erstem Zeichen?!
Ja, ab dem ersten Zeichen, auf das der Zeiger zeigt; das muss aber nicht das erste Zeichen in der Zeichenkette sein:
char* mystrstr ( char* str, char* substr, unsigned n ) { char* s = str; unsigned len = strlen(substr); if ( len > n ) return 0; while( s && *s && (s-str) <= n-len) if ( 0== strncmp(s++, substr, len)) return --s; return NULL; }
Vllt. sollte man noch substr auf NULL checken.
Gruß,
B.B.