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 einfachthe.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