2017-10-21 112 views
0

为什么不能我使用此代码,我使用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); 

} 
+1

首先,如果'的argc == 2'的有效索引是'[0]'和'[1]',值2表示有多少,而不是最高指数。如果你输入'4 + 3',没有空格,我会期待'argv [1]'中的所有内容。 –

+1

鉴于输入格式,您正在使用不合适的格式字符串。你也应该检查'sscanf()'的返回值。 –

回答

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); 
} 
+0

可惜这种代码是使用输入2 + 4 15 + 17 1.395 + 2.890 1.562 + 0 2.391 +一个 一个+ 2.695 – Squidly

+2

@Squidly在这种情况下被测试,它预订购失败测试。你将不得不重新设计。 –

+0

我的大学讲师有一些机器人标志着我们的代码一旦在线提交,它使用+输入值,所以我把它全部弄错了。 – Squidly