【问题标题】:Reading values from command arguments in C从 C 中的命令参数中读取值
【发布时间】:2017-10-21 12:28:14
【问题描述】:

为什么我不能使用此代码从命令行读取第二个值,我使用的是 VS 2017 并且命令参数中有 4+3

#include <stdio.h> 

int main(int argc, char *argv[])
{
float numberOne;
float numberTwo;
float theResult;

if (argc == 2)
{
    sscanf(argv[1], "%f", &numberOne);
    sscanf(argv[2], "%f", &numberTwo);
    printf("%f \n", numberOne + numberTwo);

}
else
{
    printf("invalid input");
}

sleep(10);
return(0);

}

【问题讨论】:

  • 首先,如果argc == 2 的有效索引是[0][1],则值2 表示有多少,而不是最高索引。如果你输入4+3,没有空格,我希望所有的都在argv[1]
  • 给定输入格式,您使用的格式字符串不合适。您也应该检查来自sscanf() 的返回值。

标签: c command arguments


【解决方案1】:

您应该以4 3 的形式传递参数(3 和4 之间没有'+' 字符)。 argc 是传递的命令行参数的数量。默认情况下,第一个参数始终是程序名称。因此,argc 的值为 3。

if (argc == 3)
{
    sscanf(argv[1], "%f", &numberOne);
    sscanf(argv[2], "%f", &numberTwo);
    printf("%f \n", numberOne + numberTwo);
}

【讨论】:

  • 不幸的是,这段代码正在使用输入 2+4 15+17 1.395+2.890 1.562+0 2.391+a a+2.695 进行测试
  • @Squidly 在这种情况下,它将无法通过测试。您将不得不重新设计。
  • 我的大学讲师有某种机器人,一旦在线提交,它就会标记我们的代码,它使用 + 输入值,所以我弄错了。
  • @Squidly;恐怕我帮不了你。您必须重写代码,使其以a+b 形式输入,然后对其进行解析并进行添加。如果您在那之后有任何问题,请告诉我们。
猜你喜欢
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 2010-12-02
  • 2015-08-14
  • 2022-11-20
相关资源
最近更新 更多