Warum muss ich verwenden Sie doppelte backslashes für die Datei-Pfade im code?
In meinem Programm versuche ich, eine Datei zu öffnen, zum Beispiel C:\unescaped\backslashes.txt
, aber es nicht öffnen! Warum?
Was ist das?
Dies ist eine Sammlung von gemeinsamen Q&A. Dies ist auch ein Community-Wiki, so dass jeder ist eingeladen, bei der Aufrechterhaltung es.
Warum ist das so?
Gibt es eine Menge von Fragen auf der Website, die einkochen OP nicht zu wissen, er/Sie braucht, um zu entkommen, einen umgekehrten Schrägstrich in Datei-Pfade im Quell-code. Die Fragen sind in der Regel "Warum ist mein Programm nicht funktioniert?" oder "Warum ist die Datei nicht finden?", und irgendwo in den source-code gibt es:
const char *fileName = "C:\unescaped\backslashes.txt";
Was ist der Umfang?
Diese Frage gilt für C, C++, Java, Python und andere Sprachen, wo der compiler behandelt umgekehrten Schrägstrich als escape-Zeichen.
Meta-post für Referenz - Vorschlag für genau das doppelte Spüle, für alle die "Doppel-backslashes in Dateinamen" Fragen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die vorläufige Antwort. Es ist community-wiki so fühlen sich frei, es zu verbessern.
Irgendwo in deinem code hast du einen Datei-Pfad mit backslashes nicht korrekt codierten. Zum Beispiel:
Müssen Sie es ändern in:
Warum?
Den compiler in C, C++, Java, Python und andere Sprachen behandeln den umgekehrten Schrägstrich als Sonderzeichen, genannt das escape-Zeichen.
Beispielsweise
\n
wird verwandelt werden in eine Zeile. Also dieser code -printf("C:\new file.txt");
druckenAlso, wenn Sie einen Datei-Namen, die umgekehrte Schrägstriche enthält, was das Programm empfangen nicht, was Sie sehen in den Quellcode. Der umgekehrte Schrägstrich selbst kann entkommen mit einem weiteren umgekehrten Schrägstrich. Also dieser code -
printf("C:\\new file.txt");
drucken wird: