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 `system()` de C ?

Linda Hamilton
Libérer: 2024-10-30 15:27:26
original
694 Les gens l'ont consulté

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

Erreur de fonction C system() avec des espaces dans les paramètres

Énoncé du problème

Lors de l'utilisation de la fonction system() en C pour exécuter un exécutable avec paramètres, une erreur se produit s'il y a des espaces à la fois dans le chemin de l'exécutable et dans le chemin d'un fichier passé en paramètre. Le message d'erreur se lit comme suit :

The filename, directory name, or volume label syntax is incorrect.
Copier après la connexion

Explication

La fonction system() exécute les commandes système en les transmettant au processeur de commandes Windows (cmd). Lorsque la commande contient des espaces, le processeur de commandes interprète tout ce qui se trouve entre les premier et dernier guillemets comme un argument unique. Cependant, dans ce cas, les guillemets doubles autour du chemin de l'exécutable et les guillemets doubles autour du chemin du fichier de paramètres provoquent un conflit.

Solution

Pour résoudre le problème, un jeu supplémentaire de doubles des guillemets doivent être ajoutés pour entourer l’intégralité de la commande. De cette façon, le processeur de commandes traite tout ce qui se trouve entre ces guillemets les plus externes comme un seul argument, même s'il contient des espaces et d'autres guillemets doubles.

<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
Copier après la connexion

Notes supplémentaires

  • Le cmd Des indicateurs /S /C peuvent être ajoutés à l'appel de fonction system() pour garantir que la chaîne est toujours analysée comme un scénario du cas 2, où les guillemets doubles sont traités comme faisant partie de l'argument.
<code class="cpp">system("cmd /S /C \"\"D:\test\" nospaces \"text with spaces\"\"");</code>
Copier après la connexion
  • L'utilisation de ce mécanisme de citation permet d'éviter l'erreur provoquée par les espaces dans les chemins de l'exécutable et des paramètres.

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