Heim > Artikel > Backend-Entwicklung > Wie führe ich Programme mit Parametern aus, die Leerzeichen enthalten, indem ich „system()“ in C verwende?
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.
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>
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>
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>
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!