Maison > développement back-end > C++ > Comment exécuter des programmes avec des paramètres contenant des espaces en utilisant `system()` en C ?

Comment exécuter des programmes avec des paramètres contenant des espaces en utilisant `system()` en C ?

Patricia Arquette
Libérer: 2024-11-02 02:37:30
original
1004 Les gens l'ont consulté

How to Execute Programs with Parameters Containing Spaces Using `system()` in 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.
Copier après la connexion

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

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

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

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!

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