Maison > Article > développement back-end > Comment exécuter des programmes avec des paramètres contenant des espaces en utilisant `system()` en C ?
L'appel C system() échoue avec des paramètres contenant des espaces
Lors de l'utilisation de system() pour exécuter un programme qui prend des paramètres contenant des espaces, un L'erreur courante rencontrée est :
The filename, directory name, or volume label syntax is incorrect.
Cela se produit lorsque le chemin de l'exécutable et les chemins des paramètres contiennent des espaces.
Par exemple, le code suivant :
<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>
génère le message d'erreur dû à la présence d'espaces dans le chemin "pdftotext" et le chemin du fichier PDF.
Ce problème survient car system() passe ses arguments à cmd /k, qui interprète le premier caractère de guillemet comme le début du nom de l'exécutable et le deuxième caractère guillemet comme fin du nom de l'exécutable. Par conséquent, la ligne de commande n'est pas analysée correctement, ce qui entraîne l'erreur.
Pour résoudre ce problème, la commande peut être placée entre guillemets :
<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
Alternativement, cmd /S peut être utilisé pour forcer l'interprétation stricte de la ligne de commande sans règles d'analyse particulières :
<code class="cpp">system("cmd /S /C \"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
En appliquant ces solutions, l'appel system() peut exécuter avec succès le programme avec des paramètres contenant des espaces.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!