c++ - 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, 100, argv[3]);
operacion=*argv[2];
}
它可以很好地打印出参数,但是在运行程序后,它会在执行第二个 strcpy_s 后抛出我之前提到的错误:
strcpy_s(num2, 100, argv[3]);
第一个 strcpy_s 工作正常,并且 num1 被分配了我在参数中传递的第一个数字,但之后我做的任何其他事情都会引发错误。
在逐行调试时,我注意到变量“argv”具有我的可执行文件的正确路径,但在执行第一个 strcpy_s 后,内容从正确的文件路径更改为 0xfefefefe
我一直在寻找这个错误,但他们都有一个 nullptr 错误,我找不到任何关于此的信息。非常感谢您的帮助,谢谢。
解决方案
推荐阅读
- java - 使用 openapi maven 生成器时出现空点异常
- python - 类名(对象)中的对象是什么:?
- discord.js - Error code when running discord bot command (js)
- postgresql - 我是否必须在每次连接到数据库时创建扩展?
- c++ - 如何在运行时使用 C++ 在工厂类中动态注册类
- python - 在 postgresql 中生成创建表语句
- javascript - 通过按钮将内容从 div 元素复制到剪贴板
- sql-server - 将 EF Core Angular 应用发布到 Azure 应用服务时出错
- javascript - React component render twice using useState
- notepad++ - 如果该行包含另一个字符,则在行的开头插入一个字符(例如制表符):notepad++