Maison > développement back-end > C++ > le corps du texte

Comment gérer les espaces dans les paramètres lors de l'utilisation de la fonction C `system()` ?

Susan Sarandon
Libérer: 2024-10-30 05:12:02
original
221 Les gens l'ont consulté

How to Handle Spaces in Parameters When Using the C   `system()` Function?

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>
Copier après la connexion

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>
Copier après la connexion

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 :

  • Les guillemets sont conservés si la ligne commence et se termine par des guillemets, aucun commutateur /S n'est spécifié et le texte cité est un nom de fichier exécutable.
  • Sinon, si seul le premier caractère est cité, le guillemet d'ouverture est supprimé et le guillemet de fermeture est supprimé de la fin de la ligne, préservant ainsi tout texte ultérieur.

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!