我正在开发一个简单的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
它仍然显示正确的结果,但是在最后一行,在执行程序时会添加上述错误。
我该如何解决?任何帮助将不胜感激:)
答案 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风格的语言进行赋值和相等性检查:)