Sonderzeichen maskieren

Ravebaby

Erfahrenes Mitglied
Hallo,

ich möchte einen Pfad übergeben und davor die Sonderzeichen maskieren.
Gibt es da eine ferige C Funktion, oder muss man von Hand alle \ durch \\ ersetzen?!
Danke
Grüße Ravebaby
 
Hy!

Warum willst du denn die \ in deinem String durch \\ ersetzen?
Die \\ brauchst du nur wenn du einen statischen Pfad in deinem Programm eingibst z.B.
Code:
char *szPfad = "C:\\Programme\\test"
Wenn der User den Pfad eingibt, oder du ihn aus einem File lädst benötigst du kein \\ da im String sowiso schon ein \ steht. Im obigen Beispiel benötigst du das \\ deshalb, weil der Compiler sonst die Escape-Sequenzen \P und \t interpretieren würde.

mfg
uhu01
 
moin


Am Anfang ein
Code:
#define \ \\
Das sollte dein Problem lösen.

Das Problem ist dann nur das vielleicht ein gewolltes \ auch durch ein \\ ersetzt wird, aber anders geht es nicht.


mfg
umbrasaxum
 
aso, noch was: kann dies wirklich mein Problem lösen?!
Ich bekomme den "filepath" als Variable zurück und möchte die Sonderzeichen in dieser Variable maskieren
 
moin


Nein das wird dein Problem wohl nicht lösen.
Aber wie meinst du das?
Bekommst du ein Pfad wie z.B. "C:\hallo\test.exe" oder "C:\\hallo\\test.exe"?
Und möchtest du das ins jeweils andere Umwandeln?


mfg
umbrasaxum
 
ich bekomme in der Variablen einen Pfad "c:\programme\" zurückgeliefert und möchte diesen in
"c:\\programme\\" umwandeln, damit es keinen bug gibt.
 
moin


Ich hab dir dazu mal eben ne Funktion geschrieben die macht was du möchtest:
Code:
void StringToPath(char *pfad)
{
	char *dummy = new char[strlen(pfad)+20];
	int i=0;
	int l=0;

	for(i=0; i < strlen(pfad); i++, l++)
	{
        if(pfad[i] == '\\')
		{
			dummy[l++] = pfad[i];
			dummy[l] = '\\';
			continue;
		}
		dummy[l] = pfad[i];
	}
	dummy[l]='\0';
	strcpy(pfad, dummy);
}


mfg
umbrasaxum
 
Du hast immer mit CHARS gearbeitet. Meine Variable ist vom Typ CString. Muss ich das zwingend konvertieren?! Hab grad in den Docus geschaut, scheint ja gar nich so einfach zu sein CStrings in CHARS zu casten?!
 
Zurück