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.


Log in to reply