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.
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.
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>
<code class="cpp">system("cmd /S /C \"\"D:\test\" nospaces \"text with spaces\"\"");</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!