Zeichen ermitteln und bis zu dieser Position kopieren
-
Hallo,
irgendwie habe ich echt das GEfühl ich bin total doof. Ich habe einen String, der einen Pfad enthält und am Ende ein Leerzeichen. Ich möchte das letzte Slash suchen und den String bis zu der Position des letzten Slashes kopieren, unter XP geht es, bei Vista wird nach der Position des letzten Slashes "Hützligrütz" ausgegeben.
Hier mein Code:
char strHTTPD[255]; / strcpy(strHTTPD, getenv("HTTPD")); char test[255]; strcpy(test, ";"); strcat(test, strHTTPD); strcat(test, ";"); dlg.MessageBox(strHTTPD, "", MB_OK); //Variable test um zu sehen ob vor dem Pfad oder danach Leerzeichen enthalten sind dlg.MessageBox(test, "", MB_OK); //er gibt hier ;C:\Doc&Settings\Username\localSettings\Temp\test\httpd.conf ;aus char * cLastSlash; cLastSlash = strrchr(strHTTPD, '\\'); if(cLastSlash!=NULL){ char strPos[255]; memcpy(strIETD, strHTTPD, cLastSlash-strHTTPD); dlg.MessageBox(strIETD, "", MB_OK); //bei XP gibt er es richtig aus den Pfad wie oben bis \temp\test und bei Vista gibt er \temp\test\,èv und noch ein paar Sonderzeichen danach aus }
Was mache ich nur falsch?das kann doch nicht sooo schwer sein oder?
Viele Grüße
-
Also wenn du CStrings nehmen willst/kannst, dann gehts so:
int Position; CString YourPath; Position = YourPath.ReverseFind('\\'); YourPath = YourPath.Left(Position);
-
Nach dem
memcpy(strIETD, strHTTPD, cLastSlash-strHTTPD);
sollte der neue String (natürlich) mit einer 0 enden.
Wenn es ohne funktioniert, dann wohl eher zufällig.
Wo strIETD herkommt ist mir nicht klar, strPos[255] wird dagegen
nie verwendet ...strIETD[cLastSlash-strHTTPD] = 0;