C system() 调用因包含空格的参数而失败
当使用 system() 执行参数包含空格的程序时,遇到的常见错误是:
The filename, directory name, or volume label syntax is incorrect.
当可执行路径和参数路径都包含空格时会出现这种情况。
例如以下代码:
<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>
生成由于“pdftotext”路径和 PDF 文件路径中存在空格而出现错误消息。
出现此问题的原因是 system() 将其参数传递给 cmd /k,它将第一个引号字符解释为可执行文件名称的开头和第二个引号字符作为可执行文件名称的结尾。因此,命令行解析错误,导致错误。
要解决此问题,可以将命令用双引号括起来:
<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
或者 cmd /S可用于强制严格解释命令行,无需特殊的解析规则:
<code class="cpp">system("cmd /S /C \"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
通过应用这些解决方案,system() 调用可以成功执行参数包含空格的程序。
以上是如何在 C 中使用“system()”执行参数包含空格的程序?的详细内容。更多信息请关注PHP中文网其他相关文章!