首页 > 解决方案 > C 中的 system() 无限次打印传递的命令而不是执行它 - 错误

问题描述

我对 C 编程并不陌生,但我今天面对的是新的。system() 函数无限次打印传递的命令,而不是执行它。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char type[] = "exe";
    char name[] = "FileMaker";
    char jar_location[] = "D:\\Fida\\Codeblocks\\Java\\Projects\\FileHandling\\dist";
    char jar[] = "FileHandling.jar";
    char output_location[] = "D:\\Fida\\CodeBlocks\\java";
    char module_location[] = "\"C:\\Program Files\\Java\\jdk-16.0.1\\jmods\"";
    char modules[] = "java.base";

    char mandatory_cmd[2048];

    sprintf(mandatory_cmd, "jpackage -t %s --name %s --input %s --dest %s --main-jar %s --module-path %s --add-modules %s", type, name, jar_location, output_location, jar, module_location, modules);
    puts(mandatory_cmd);
    system(mandatory_cmd);
}

一些信息可能会对您有所帮助:

  1. 输入的命令不是在 windows 中预建的。它来自 Java Development Kit 16。
  2. 我确实编辑了操作系统的环境变量以将路径添加到我的 java。

还要注意的一件事是,我曾经评论过(//)system() 函数以使用 puts() 打印命令;然后我将打印的命令复制并自己粘贴到cmd中,它工作正常。那么为什么它在 system() 函数中不起作用呢?

任何帮助表示赞赏。

问候,

菲达

标签: ccmdsystem

解决方案


推荐阅读