Heim > Backend-Entwicklung > C++ > Hauptteil

Wie führe ich Programme mit Parametern aus, die Leerzeichen enthalten, indem ich „system()' in C verwende?

Patricia Arquette
Freigeben: 2024-11-02 02:37:30
Original
941 Leute haben es durchsucht

How to Execute Programs with Parameters Containing Spaces Using `system()` in C  ?

C system()-Aufruf schlägt fehl, wenn Parameter Leerzeichen enthalten

Wenn system() zum Ausführen eines Programms verwendet wird, das Parameter mit Leerzeichen akzeptiert, a Ein häufiger Fehler ist:

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

Dies tritt auf, wenn sowohl der ausführbare Pfad als auch die Parameterpfade Leerzeichen enthalten.

Für Beispiel: Der folgende Code:

<code class="cpp">#include <stdlib.h>
#include <conio.h>

int main() {
  system("\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"");
  _getch();
}</code>
Nach dem Login kopieren

erzeugt die Fehlermeldung aufgrund des Vorhandenseins von Leerzeichen im „pdftotext“-Pfad und im PDF-Dateipfad.

Dieses Problem entsteht, weil system() übergibt seine Argumente an cmd /k, das das erste Anführungszeichen als Anfang des Namens der ausführbaren Datei und das zweite Anführungszeichen als Ende des Namens der ausführbaren Datei interpretiert. Infolgedessen wird die Befehlszeile falsch analysiert, was zu dem Fehler führt.

Um dieses Problem zu lösen, kann der Befehl in doppelte Anführungszeichen gesetzt werden:

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

Alternativ cmd /S kann verwendet werden, um eine strenge Interpretation der Befehlszeile ohne spezielle Parsing-Regeln zu erzwingen:

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

Durch die Anwendung dieser Lösungen kann der system()-Aufruf erfolgreich ausgeführt werden Führen Sie das Programm mit Parametern aus, die Leerzeichen enthalten.

Das obige ist der detaillierte Inhalt vonWie führe ich Programme mit Parametern aus, die Leerzeichen enthalten, indem ich „system()' in 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!