首页 > 后端开发 > C++ > 正文

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

Mary-Kate Olsen
发布: 2024-11-02 13:45:30
原创
667 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!