2017-10-18 200 views
0

如何正确查看在我的scanf函数中读取了多少个输入?当我运行下面的代码不显示的结果,这是因为我没有2个输入从scanf或其他一些原因 读到这里是我的代码:如何正确验证在scanf中读取了多少个输入

#include <stdio.h> 

int main() 
{ 
float numberOne; 
float numberTwo; 

scanf("%f %f", &numberOne, &numberTwo); 
float result = numberOne + numberTwo; 

int howManyRead = scanf("%f %f", &numberOne, &numberTwo); 

if (howManyRead == 2) 
{ 
    printf("%f", &result); 
} 
else 
{ 
    printf("invalid input"); 
} 
sleep(10); 

} 
+0

https://stackoverflow.com/questions/10469643/value-returned-by-scanf-function-in-c希望这可以帮助。 – Mare70

+2

您是否打算两次拨打scanf? – user2867342

+0

“在我的scanf函数中读取了多少输入?” - >您希望用户如何表明输入已完成?通过输入文本,然后输入''\ n''?应该输入'“123 \ n”'报告只输入了1个数字还是等待输入的下一行如“456 \ n”'? – chux

回答

1

你在你的代码有scanf两个电话。第一次调用的结果被忽略,而第二次调用的结果被检查。

当您输入两个数字时,第一个scanf会返回2,代码会忽略。之后,拨打第二个scanf的电话会尝试读取两个附加号码。

float numberOne, numberTwo; 
if (scanf("%f %f", &numberOne, &numberTwo) == 2) { 
    float result = numberOne + numberTwo; 
    printf("%f", result); 
} else { 
    printf("invalid input"); 
} 
-1

您还没有以预期的方式使用scanf()返回值:

您可以通过删除第一次调用scanf解决这个问题。它在那里可以确定扫描的成败,并据此作出决定。

你需要做三件事情。

  • 取下两行

    scanf("%f %f", &numberOne, &numberTwo); 
    float result = numberOne + numberTwo; 
    

    这是因为,没有检查,如果您尝试使用目标变量的值有可能的情况下,scanf()失败不确定的。此外,还有重复的scanf()这是错误的,不需要的。

  • 在条件块if (howManyRead == 2)内添加行float result = numberOne + numberTwo;

  • printf通话中移除了&printf("%f", result);

+0

谢谢@melpomene,这使得三点,已经更新。 :) –

+0

downvote的原因? –