c++ - 为什么我的命令行参数处理会导致我的程序崩溃?

标签 c++ command-line-arguments argv

为什么看似简单的事情却让我的程序崩溃?

我正在尝试获取 n 的值以创建一个大小为 N 的数组并对其执行各种操作,但这不是重点。无论如何,每次我尝试访问 argv[1] 时它都会崩溃。

int main(int argc, char * argv[])
{
  int n;
  n = atoi(argv[1]); //Crashes here!
  cout << "\nN: " << n << endl;
}

最佳答案

argv[1] 是否存在?为防止您的代码访问内存,它不应检查传递了多少参数。

if(argc >= 2)
  n = argv[1];
else
  std::cout << "Proper usage: .....\n";

这似乎是学习如何使用调试器查看 argv 和 argc 内容的好时机。

关于c++ - 为什么我的命令行参数处理会导致我的程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993994/

相关文章:

c++ - 如何知道函数是否来自 MFC

c++ - Vulkan 异步模型加载

linux - 一种不使用转义符号阻止bash解析命令行的方法

c - 段错误和 argv、argc

perl - 无法弄清楚如何在 perl 中修复此脚本

C++如何在不复制的情况下将元素存储在双端队列中

c++ - 即使在上下文终止后 ZMQ recv() 仍在阻塞

c - 如何在 C 中为输入和输出文件运行命令行参数

c - 从 C 中的两个参数字符串中删除重复字符

c++ - 为什么我们使用 "const char* const* argv"而不是 "char *"?