Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit Leerzeichen in Parametern um, wenn ich die Funktion „system()' von C verwende?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 15:27:26686Durchsuche

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.

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>

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>
  • 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!

Stellungnahme:
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