Heim > Backend-Entwicklung > C++ > Hauptteil

Wie gehe ich mit Leerzeichen in Parametern um, wenn ich die Funktion „system()' von C verwende?

Linda Hamilton
Freigeben: 2024-10-30 15:27:26
Original
694 Leute haben es durchsucht

How to Handle Spaces in Parameters When Using C  's `system()` Function?

C system()-Funktionsfehler mit Leerzeichen in Parametern

Problemstellung

Bei Verwendung der system()-Funktion in C zum Ausführen einer ausführbaren Datei mit Parametern tritt ein Fehler auf, wenn sowohl im Pfad der ausführbaren Datei als auch im Pfad einer als Parameter übergebenen Datei Leerzeichen vorhanden sind. Die Fehlermeldung lautet:

The filename, directory name, or volume label syntax is incorrect.
Nach dem Login kopieren

Erklärung

Die Funktion system() führt Systembefehle aus, indem sie sie an den Windows-Befehlsprozessor (cmd) übergibt. Wenn der Befehl Leerzeichen enthält, interpretiert der Befehlsprozessor alles zwischen dem ersten und dem letzten doppelten Anführungszeichen als ein einzelnes Argument. In diesem Fall verursachen jedoch die doppelten Anführungszeichen um den Pfad der ausführbaren Datei und die doppelten Anführungszeichen um den Pfad der Parameterdatei einen Konflikt.

Lösung

Um das Problem zu beheben, ist ein zusätzlicher Satz doppelter Anführungszeichen erforderlich Anführungszeichen müssen hinzugefügt werden, um den gesamten Befehl einzuschließen. Auf diese Weise behandelt der Befehlsprozessor alles innerhalb dieser äußersten doppelten Anführungszeichen als ein einziges Argument, auch wenn es Leerzeichen und andere doppelte Anführungszeichen enthält.

<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
Nach dem Login kopieren

Zusätzliche Hinweise

  • Der cmd /S /C-Flags können dem Funktionsaufruf system() hinzugefügt werden, um sicherzustellen, dass die Zeichenfolge immer als Fall-2-Szenario analysiert wird, in dem die doppelten Anführungszeichen als Teil des Arguments behandelt werden.
<code class="cpp">system("cmd /S /C \"\"D:\test\" nospaces \"text with spaces\"\"");</code>
Nach dem Login kopieren
  • Die Verwendung dieses Anführungszeichenmechanismus überwindet den Fehler, der durch Leerzeichen in den Pfaden sowohl der ausführbaren Datei als auch der Parameter verursacht wird.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Leerzeichen in Parametern um, wenn ich die Funktion „system()' von C verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage