memcpy problem?



  • Hi,

    Möchte einen String, der eine Url enthält, überprüfen ob ein "http://" am Anfang steht, wenn ja soll dieses "gecuttet" werden.
    Wenn ich kein "http://" am Anfang angebe, funktioniert die spätere "sprintf" Ausgabe "http://blah.com", wenn ich allerdings "http://" miteingebe, kommt als Ausgabe immer "http://http://blah.com".

    if(strstr(url, "http://") != NULL)
    	{
    		(char*)tmpUrl = malloc(strlen(url) - 6);
    		memcpy((char*)tmpUrl, (char*)&url[6 + 1], (strlen(url) - 6));
    
    		the.URLcut = tmpUrl;
    	}
    	the.URLcut = url;
    
    ...
    sprintf(buf, "http://%s\r\n", the.URLcut);
    ...
    

    Hat einer eine Idee?



  • Hm 🙄 Muß unbedingt gecuttet werden ?
    Ansonsten mach das doch ungefähr so:

    Wenn am Anfang von URL [b]http://[/b] dann
      sprintf(buf, "%s\r\n", URL);
    ansonsten
      sprintf(buf, "http://%s\r\n", URL);
    


  • 1. strstr such einen substring in einem string, also würde auch foobar.http://moep akzeptiert werden. Nutz dafür strncmp
    2. warum nicht einfach

    the.URLcut=url+7;
    

    ?
    3. lass das unnötige casten sein, dass macht das nicht gerade übersichtlich
    4. solltest du mit sprintf aufpassen, da man damit leicht buffer-overflows erzeugen kann


Anmelden zum Antworten