首页 >后端开发 >C++ >如何使用 C system() 执行参数包含空格的外部应用程序?

如何使用 C system() 执行参数包含空格的外部应用程序?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-02 13:45:30732浏览

How to Execute External Applications with Arguments Containing Spaces Using C   system()?

C system() 调用因多个包含空格的参数而失败

在 C 中通过 system() 调用外部应用程序时,确保正确处理以下参数至关重要:包含空格。如果可执行路径和参数都包含空格,则可能会出现错误。

底层错误机制

system() 本质上使用 cmd /C 执行指定的命令。处理命令行时,cmd 遵循有关引号字符的某些规则。默认情况下,它会删除前导和尾随引号,将剩余的字符串视为可执行文件名称。

解决错误

要解决此问题,必须将命令包含在一组附加的双引号:

<code class="cpp">system("\"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>

这种额外的引用级别可确保 cmd 正确解释每个参数,无论是否存在空格。

替代方法

另一种方法涉及使用批处理文件来执行带有所需参数的命令。可以使用以下内容创建批处理文件:

cd PATH_TO_DIR
EXECUTABLE_NAME ARG1 ARG2

通过以此批处理文件名作为参数调用 system(),即使参数包含空格,该命令也将按预期执行。

其他注意事项

为了确保与不同环境和 shell 实现的兼容性,建议在使用 system() 时包含 /S 开关。此开关强制 cmd 严格根据 cmd 文档中所述的情况 2 解析命令行。

示例:

<code class="cpp">system("cmd /S /C \"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>

以上是如何使用 C system() 执行参数包含空格的外部应用程序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn