在 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中文网其他相关文章!