如何正确查看我的scanf函数中读取了多少输入?当我运行以下代码时它不显示结果,这是因为我没有从scanf读取的2个输入或其他一些原因 这是我的代码:
#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 :(得分:1)
您的代码中有两次scanf
来电。忽略第一个调用的结果,同时检查第二个调用的结果。
当您输入两个数字时,第一个scanf
将返回2,代码会忽略该数字。之后,对第二个scanf
的调用会尝试读取另外两个数字。
您可以通过删除对scanf
的第一次调用来解决此问题:
float numberOne, numberTwo;
if ( scanf("%f %f", &numberOne, &numberTwo) == 2) {
float result = numberOne + numberTwo;
printf("%f", result);
} else {
printf("invalid input");
}
答案 1 :(得分:-1)
您未按预期方式使用scanf()
的返回值。它可以识别扫描的成功/失败,并根据它做出决定。
您需要做三件事。
删除两行
scanf("%f %f", &numberOne, &numberTwo);
float result = numberOne + numberTwo;
这是因为,如果您尝试使用目标变量而未进行检查,则scanf()
失败时,值可能不确定。此外,还有重复的scanf()
,这些都是错误的,不需要。
在条件块float result = numberOne + numberTwo;
中添加第if ( howManyRead == 2)
行。
从&
来电中删除printf
:printf("%f", result);