0

我有一个 CPP 程序(我们称之为程序 1),它调用另一个 CPP 程序(程序 2)。这个 Program2 是在调试模式下构建的。那是:

   int main(int argc, char** argv) {
    ///Function body#
     eerot[0] = atof(argv[1]); 
eerot[1] = atof(argv[2]); 
eerot[2] = atof(argv[3]); 
eetrans[0] = atof(argv[4]); //Exception thrown here due to memory clash
     ///Continue
    }

上面的代码片段描述了我在program2中的主程序的结构。Program2 既没有执行错误,也没有抛出任何异常。现在我想从 program1 调用 program2 的这个主函数,但我被双指针变量卡住了。因为 argv 变量是双指针,即使我能够创建一个字符串,对其进行双重引用并将其作为参数传递给 program2,我也会遇到异常。没有编译错误。所有适当的标题都被完美定义。

我无法编辑 program2,因为它是由其他团队开发的,而且很难理解。我已经更改了程序 2 的主函数的名称(比如“计算()”)并从程序 1 的主函数中调用它。我还适当地包含了目录和头文件,以使 program2 的所有函数和类在 program1 中可见。现在我唯一被卡住的是双指针 argv 变量。如何将必须通过命令提示符传递的参数传递给另一个程序?

请注意,我们在命令提示符中为 program2 传递的参数是 double 类型。我尝试使用数组,但我不断收到异常。让我知道您在尝试解决问题时想到的任何事情。

4

2 回答 2

0

我相信问题出在 main() 声明中的三重指针。你可能的意思是:

int main(int argc, char** argv) {

或者

int main(int argc, char* argv[]) {

于 2019-05-21T19:09:21.827 回答
0

你想要 char **argv ... OR char *argv[],而不是 char **argv[]

以上都是指向数组的指针。你所拥有的是一个指向二维数组的指针,所以你访问元素的方式最终会超过数组元素的数量。

于 2019-05-21T19:11:07.470 回答