”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用 C++ system() 执行参数包含空格的外部应用程序?

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

发布于2024-11-08
浏览:806

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

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

在 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\"\"");
最新教程 更多>
  • Angular 和 15 的改进
    Angular 和 15 的改进
    1) 在没有构造函数的情况下在 Angular 14 中使用注入注入服务。 以前,注入任何服务总是需要具有构造函数的类: class MyClass { constructor(private myService: MyService) {} } 现在,我们可以在函数和类中注入服务。我们只需要声...
    编程 发布于2024-11-08
  • 如何修复 Android 中的“java.lang.String 类型的值无法转换为 JSONObject”错误?
    如何修复 Android 中的“java.lang.String 类型的值无法转换为 JSONObject”错误?
    排除“java.lang.String 类型的值\u003cbr\u003e 无法转换为 JSONObject”错误在您的 Android 应用程序中,您遇到与 JSON 解析相关的错误。具体来说,您会看到以下异常:org.json.JSONException: Value <br of t...
    编程 发布于2024-11-08
  • 如何在 JavaScript 中强制硬刷新并防止缓存问题?
    如何在 JavaScript 中强制硬刷新并防止缓存问题?
    解决 JavaScript 缓存问题:使用 JavaScript 清除缓存部署新的 JavaScript 代码时,看不到反映的最新更新是令人沮丧的。此问题通常是由于缓存的浏览器响应而引起的。为了消除这个问题,我们可以利用 JavaScript 函数 window.location.reload(tr...
    编程 发布于2024-11-08
  • 如何在 Python 中使用 Inflect 将整数转换为单词?
    如何在 Python 中使用 Inflect 将整数转换为单词?
    在 Python 中将整数转换为单词在 Python 中将数值转换为相应的单词表示形式可能是一项令人费解的任务。本文探讨了使用 inflect 包的简单解决方案。困境:该示例尝试将歌曲“99 Bottles of Beer”打印在Wall”,用文字替换数值。然而,代码目前显示的是数字而不是它们的口头...
    编程 发布于2024-11-08
  • 关闭响应正文真的可以在 Go HTTP 客户端中实现连接重用吗?
    关闭响应正文真的可以在 Go HTTP 客户端中实现连接重用吗?
    Go HTTP 客户端连接重用:常见误解Go HTTP 客户端默认设计为重用连接,提供高效的网络利用率。然而,某些场景可能会导致对连接重用的误解。原始查询:无限连接创建在给定的代码中,最初看起来无限数量的连接正在被创建。不过,这个问题可以通过在收到响应后关闭请求正文来解决。这使得传输能够识别该连接可...
    编程 发布于2024-11-08
  • 如何动态重定向Python函数中的标准输出和错误流?
    如何动态重定向Python函数中的标准输出和错误流?
    Python 中的上下文流重定向标准输出和错误流(stdout 和 stderr)的重定向在许多场景中证明是有用的。然而,当函数持有对这些流的内部引用时,传统方法通常会出现不足。需要动态解决方案传统的重定向技术,如 sys.stdout,永久重定向流。当方法本质上在内部复制这些变量之一时,就会出现此...
    编程 发布于2024-11-08
  • 如何在 Java 中有效地计算文件或文件夹的大小?
    如何在 Java 中有效地计算文件或文件夹的大小?
    在 Java 中获取文件或文件夹的大小检索文件或文件夹的大小是处理文件时的常见任务在爪哇。下面是如何有效地做到这一点:获取文件大小要获取文件的大小,您可以使用 java.io 上的 length() 方法.文件对象。这将返回文件的长度(以字节为单位),如果文件不存在,则返回 0。java.io.Fi...
    编程 发布于2024-11-08
  • 变量第 04 部分
    变量第 04 部分
    মনে করুন আপনি চা খাবেন। না, চা না। কফিই খান। প্রোগ্রামার হচ্ছেন কফি তো খেতেন পারেন। কফিকে প্রোগ্রামারদের সঙ্গি বললে ভুল হবে না । যাই হোক। এখন কফি তৈর...
    编程 发布于2024-11-08
  • 当我开始使用 React 时我希望知道的事情
    当我开始使用 React 时我希望知道的事情
    3年React开发经验教训 当我第一次投入 React 时,感觉就像打开了潘多拉魔盒。有很多东西要学,一路上,我遇到了很多“啊哈!”的情况。时刻。以下是我希望在开始时就知道的 10 件事,以帮助您在 React 之旅中跳过一些减速带。 1. 组件只是函数 最重要的认识? React ...
    编程 发布于2024-11-08
  • 使用 Golang 编写打字速度测试 CLI 应用程序
    使用 Golang 编写打字速度测试 CLI 应用程序
    必须认真考虑这个标题吗?...现在我们已经解决了这个问题,让我们编写一些该死的代码:) 泵制动?尖叫……让我们对今天要尝试构建的内容做一些介绍。如果标题不明显,我们将构建一个 CLI 应用程序来计算您在 golang 中的打字速度 - 尽管您可以使用您选择的任何编程语言遵循相同的技术来构建相同的应用...
    编程 发布于2024-11-08
  • 为什么我的 Bootstrap 模态不工作? ($(...).modal 不是函数)
    为什么我的 Bootstrap 模态不工作? ($(...).modal 不是函数)
    TypeError: $(...).modal is not a function with Bootstrap Modal您在尝试执行以下操作时遇到此错误动态地将 Bootstrap 模式插入 HTML 并使用 jQuery 触发它。让我们深入研究一下问题:错误表明“$().modal”函数不被j...
    编程 发布于2024-11-08
  • 如何在 PHP 中创建递归匿名函数?
    如何在 PHP 中创建递归匿名函数?
    创建递归匿名 PHP 函数在 PHP 中创建递归匿名函数可能会很有利。下面的代码演示了如何完成此操作,传递一个函数作为引用。$factorial = function( $n ) use ( &amp;$factorial ) { if( $n == 1 ) return 1; ...
    编程 发布于2024-11-08
  • 为什么双击显示/隐藏按钮仅在第二次调用时起作用?
    为什么双击显示/隐藏按钮仅在第二次调用时起作用?
    为什么第一次使用时双击显示/隐藏按钮?在网页中,按钮的作用是显示或隐藏一个元素,但它需要双击其初始调用。经检查发现该按钮的代码为:function showhidemenu() { var x = document.getElementById("menu"); if (...
    编程 发布于2024-11-08
  • 网格布局:初学者的终极指南
    网格布局:初学者的终极指南
    欢迎回到您的 CSS 冒险!今天,我们将深入研究网页设计工具库中最强大的工具之一:CSS 网格布局。将其视为布局技术的瑞士军刀 - 多功能、精确,并且能够将您的网页转变为组织精美的杰作。准备好接受并承受它了吗?我们走吧! 什么是 CSS 网格布局? 想象一下,您正在玩​​俄罗斯方块游...
    编程 发布于2024-11-08
  • 了解 Python 字典:完整概述
    了解 Python 字典:完整概述
    Python 字典是 Python 编程中最通用且使用最广泛的数据结构之一。它们是内置数据类型,允许开发人员将数据存储在键值对中,这使得它们对于各种应用程序非常有用。在本文中,我们将探讨什么是词典、如何使用它们,并提供示例来说明其功能。 什么是字典? Python 字典是无序的项目集...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3