我创建了一个名为test的程序:
#include<stdlib.h>
#include<iostream>
int main()
{
std::cout<<system("..\\add\\debug\\add.exe 4 8");
while(true);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
add.exe由
#include<stdlib.h>
int main(int argc,char **argv[])
{
int n=((unsigned)argv[1]);
int m=((unsigned)argv[2]);
return(n+m);
}
Run Code Online (Sandbox Code Playgroud)
所以当我进行测试时,我得到了
6841420
尝试是使用参数4和8进行测试运行添加,并且要添加以返回这些值的总和(12),然后测试将显示到屏幕.我是如何获得6841420的,我该如何解决?
问题是您正在将指针值转换为整数.参数将作为C样式字符串(const char*)传递给您的程序.您需要首先使用像atoi这样的API将它们转换为字符串.
#include<stdlib.h>
int main(int argc,char *argv[])
{
int n= atoi(argv[1]);
int m= atoi(argv[2]);
return(n+m);
}
Run Code Online (Sandbox Code Playgroud)
编辑
正如其他人指出的那样,您还应该进行一些错误检查,以确保实际上有2个参数传递给程序.