Maison >développement back-end >C++ >Comment gérer les espaces dans les paramètres lors de l'utilisation de la fonction C `system()` ?
Fonction C system() et gestion des espaces de paramètres
Lors de l'exécution d'un programme utilisant la fonction system() en C, il est essentiel de faites attention aux espaces dans les paramètres de commande et d’argument. Si des espaces sont présents à la fois dans le chemin de l'exécutable et dans le chemin des paramètres, cela peut entraîner une erreur.
Dans le code fourni :
<code class="cpp">system("\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"");</code>
L'erreur "Le nom du fichier, le nom du répertoire, ou la syntaxe du label de volume est incorrecte" se produit car la commande system() reconnaît la chaîne entière comme nom de l'exécutable en raison du chemin sans guillemets. Pour remédier à cela, citez l'intégralité de la chaîne de commande comme suit :
<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
De plus, comprendre le comportement de la fonction system() dans Windows est crucial. Il appelle les commandes utilisant "cmd /C" par défaut, qui traite les guillemets selon les règles suivantes :
Dans l'exemple donné, la première règle n'est pas respectée, donc la fonction system() interprète "C:UsersAdamDesktoppdftotext" -layout "C:UsersAdamDesktopweek 4.pdf" comme nom de l'exécutable, ce qui entraîne le erreur.
Pour garantir un traitement correct des commandes, il est conseillé de mettre entre guillemets la chaîne entière avec des guillemets doubles et éventuellement d'ajouter le commutateur /S pour être complet :
<code class="cpp">system("cmd /S /C \"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
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!