C ++:从命令行传递参数时,为什么会出现“抛出异常:读取访问冲突argv为0xFEFEFEFE”的情况?

问题描述

我试图通过从命令行传递数字和操作(例如“ 25.2 + 4.87”)来运行一个简单的计算器程序。使用认值时,它可以正常工作,但是一旦我传入参数,它就会引发以下消息:“抛出异常:读取访问冲突。argv为0xFEFEFEFE”

这是代码

//Valores por default
    char num1[] = "0.5";
    char num2[] = "10.25";
    char operacion = '/';
    if (argv[1] && argc ==4) { 
        std::cout << argv[1] << std::endl;
        std::cout << argv[2] << std::endl;
        std::cout << argv[3] << std::endl;
        strcpy_s(num1,100,argv[1]);
        strcpy_s(num2,argv[3]);
        operacion=*argv[2];
        
    }

它可以很好地打印出参数,但是在运行程序后,它会在执行第二个strcpy_s后抛出我前面提到的错误

strcpy_s(num2,argv[3]);

一个strcpy_s正常工作,并且为num1分配了我在参数中传递的第一个数字,但是此后我做的任何其他操作都会引发错误

在逐行调试时,我注意到变量“ argv”具有适用于我的可执行文件的正确路径,但是在执行第一个strcpy_s之后,内容the correct file path更改为 0xfefefefe

我一直在寻找此错误,但是所有人都出现了nullptr错误,我找不到关于此的任何信息。非常感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)