从c ++代码执行.exe文件+输入值

时间:2015-02-22 11:14:19

标签: c++ input call exe

我对c ++比较陌生,我只是制作了一些简单的程序。

我的一个程序需要打开一个不同的.exe文件。此.exe文件将询问2或3个文件名,然后运行并退出。

为了测试这个,我创建了一个simple_calc.exe文件,它要求value1,然后value2然后将它们相乘。

所以假设我想创建一个“call_other_file.exe”并自动运行“simple_calc.exe”,其值为1,而value2取自“call_other_file.exe”的文件。 我该如何继续这样做?

搜索了一下后,我看到类似的东西: system(“simple_calc.exe -val1 -val2”)。

但这对我不起作用。或者我不确定如何定义val1和val2 ......

编辑:我要访问的程序(示例中为simple_calc.exe),我无法更改代码,我无法访问它的.cpp文件。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

有两种方法让两个独立的程序相互通信,但system()函数可能是最简单的;它只是运行一串文本,就好像它是在控制台窗口中输入一样。

基本示例

main程序只使用两个参数运行other程序:helloworld

/* main.c */
#include <stdlib.h>
int main() { return system("./other hello world"); }

这两个参数将通过other数组作为C风格的字符串传递给argv[]程序。请注意,它们将存储为第二个第三个​​元素,因为第一个项(argv[0])将是程序本身。

/* other.c */
#include <stdio.h>
int main(int argc, char *argv[])
{
  int i = 0;
  for (i = 1; i < argc; ++i) { printf("%s\n", argv[i]); }
  return 0;
}

上述程序的输出如下:

hello
world

Process returned 0 (0x0)   execution time : 0.004 s
Press ENTER to continue.

带空格的参数

您可能已经注意到,参数是以空格分隔的。如果需要传递带空格的字符串作为单个参数,则需要将其括在引号中:

/* main.c */
#include <stdlib.h>
int main() { return system("./other \"this is all one string\" \"and so is this\" bye"); }

这会产生以下结果:

this is all one string
and so is this
bye

Process returned 0 (0x0)   execution time : 0.004 s
Press ENTER to continue.

非字符串参数

由于参数是以字符串形式给出的,因此如果需要,您需要将它们转换为数字(使用转换函数,例如strtod()atoi()atof())。这是main.c的更新版本:

/* main.c */
#include <stdlib.h>
int main() { return system("./other 4 6"); }

...以及相应的other.c文件:

/* other.c */
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
  int total, i;
  for (total = 0, i = 1; i < argc; ++i) { total += atoi(argv[i]); }
  printf("TOTAL: %d\n", total);
  return 0;
}

这会产生以下输出:

TOTAL: 10

Process returned 0 (0x0)   execution time : 0.005 s
Press ENTER to continue.

答案 1 :(得分:0)

  

我看到类似:system(“simple_calc.exe -val1 -val2”)

它应该工作。这不起作用的原因可能是你没有将int argc, char* argv[]放在你的“simple_calc”的主要功能中。

//simple_calc.cpp
int main(int argc, char* argv[])
{
    if (argc == 2)
    {
        cout << "Error: At least two argument must be exist.";
        return -1;
    }
    return 0;
    // After that, you can use 'argv' arguments to calculate what you want to calculate. Also, in order to calculate them, you also need to convert 'argv' to integer or double, since they are string or char array.
}

有关C ++命令行参数的更多信息,请参阅以下网站: http://www.tutorialspoint.com/cprogramming/c_command_line_arguments.htm

将命令行参数添加到simple_calc.cpp时,可以使用此simple_calc.exe val1 val2。要从C ++程序调用另一个程序,您需要系统调用。在你的主要功能中;

system('simple_calc.exe') 如果您使用的是Windows,还需要了解Windows控制台的工作原理。如果您使用的是Linux,它的控制台命令也不同。

我的建议是,您必须首先了解控制台如何使用不同的操作系统。