C ++ atof-分段错误(核心已转储)

时间:2020-05-15 12:04:23

标签: c++

我正在开发一个简单的C ++应用程序,但这是我第一次使用命令行参数。 实际上,它运行良好,直到我为程序添加了一次计算多个数字的选项。

我使用以下代码将argv转换为浮点数。 (以及在这种情况下相关的代码)

if (argc != 1)
    brugervinkel = atof(argv[1]);

if (argc = 3)
    brugervinkel2 = atof(argv[2]);

在我添加了一次使用更多参数的选项之前,它应有的作用。

现在,如果我不使用所有可用的参数,则会出现以下错误

Segmentation fault (core dumped)

这意味着如果我输入./program number1 number2 number3,我不会收到任何错误 但是如果我输入 ./program number1 它仍然显示正确的结果,但是在最后一行,在执行程序时会添加上述错误。

我该如何解决?任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:0)

我相信,Jabberwocky的评论实际上是答案。我认为错误是发问者实际上使用了(argc = 3)而不是(argc == 3),这不仅是问题中的格式错误。

如果您确实使用过(argc = 3),则实际上不是将argc设置为3,而是将argc设置为3 ,并且,赋值的值为true,所以无论{{1 }},代码将执行argc。然后,brugervinkel2 = atof(argv[2]);当然会崩溃,因为您没有足够的参数。

答案 1 :(得分:0)

argc = 3而不是argc == 3。始终要小心使用C风格的语言进行赋值和相等性检查:)