Frage

und es funktionierte gut

In cmd.exe, kann ich den Befehl ": \ hello.txt c \ hello2.txt Kopie c" ausführen. Aber in meinem C-Programm, lief ich dieses Stück Code und bekam folgende Fehlermeldung:

#include <iostream>

using namespace std;

int main()
{
    system("copy c:\hello.txt c:\hello2.txt");
    system("pause");

    return 0;
}

Ausgabe: Das System kann die Datei nicht finden angegeben.

Jeder weiß, was hier los ist?

War es hilfreich?

Lösung

Innerhalb C-Strings (und ganz wenigen anderen Sprachen, die die gleichen Escape-Regeln verwenden), sollte \ \\ werden, da sie die Escape-Zeichen ist. Es erlaubt Ihnen, in normalen Text, nicht druckbare Zeichen eingeben, wie:

  • das Tabulatorzeichen \t.
  • die Wagenrücklaufzeichen \r.
  • das Newline-Zeichen \n.
  • andere, die ich nicht im Detail.

Da \ als Escape-Zeichen verwendet wird, müssen wir einen Weg ein setzen ist '\' in einen String. Dies wird mit der Sequenz \\ getan.

Ihre Linie sollte daher sein:

system("copy c:\\hello.txt c:\\hello2.txt");

Dies kann manchmal zu obskuren Fehler mit Befehlen führen wie:

FILE *fh = fopen ("c:\text.dat", "w");

, wo die \t ist eigentlich der tab Charakter und die Datei, die Sie versuchen, zu öffnen:
c : TAB e x t . d a t .

Andere Tipps

Alternativ können die alle Windows-Funktionen unterstützen Unix Stil Schrägstriche

system("copy c:/hello.txt c:/hello2.txt");

Einige Leute bevorzugen dies, da es einfacher ist, eine ungerade zu beschmutzen ‚\‘.
Aber es könnte Windows-Benutzer verwirren, wenn Sie in einer Nachricht auf diesen Weg anzuzeigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top