在 C 中通过 system() 调用外部应用程序时,确保正确处理以下参数至关重要:包含空格。如果可执行路径和参数都包含空格,则可能会出现错误。
system()本质上使用cmd /C执行指定的命令。处理命令行时,cmd 遵循有关引号字符的某些规则。默认情况下,它会删除前导和尾随引号,将剩余的字符串视为可执行文件名称。
要解决此问题,该命令必须包含在一组附加的双引号:
system("\"\""CMD\"" \""ARG1\"" \""ARG2\"\"");
这个多出来的引用级别确保 cmd 正确解释每个参数,无论是否存在空格。
另一种方法涉及使用批处理文件来执行具有所需参数的命令。可以使用以下内容创建批处理文件:
cd PATH_TO_DIR EXECUTABLE_NAME ARG1 ARG2
通过以此批处理文件名作为参数调用 system(),即使参数包含空格,该命令也将按预期执行。
为了确保与不同环境和 shell 实现的兼容性,建议在使用 system() 时包含 /S 开关。此开关强制 cmd 严格根据 cmd 文档中所述的情况 2 解析命令行。
示例:
system("cmd /S /C \"\""CMD\"" \""ARG1\"" \""ARG2\"\"");
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3