我正在用C的CodeBlocks编写程序。我想检查输入的类型是否正确,如果不正确,请尝试再次获取它。
我的问题是,每当我尝试使用scanf来获取输入而输入不正确时,就不会再次输入scanf并继续循环,就好像输入总是不正确。
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a = 0;
while(scanf(" %f", & a) == 0)
{
printf("reenter");
}
printf("%f", a);
return 0;
}
[当我尝试输入不正确的值作为'y'时,循环将继续:
如果输入当前值,它将得到应有的值。
解决这种问题的一种方法是输入一个字符串(在函数上添加毒药,然后使用sscanf尝试解析它。
如果输入项输入错误,则scanf()
不会耗尽输入缓冲区,因此,您必须以其他方式对其进行读取,以确保读取(例如,作为字符串)。
见下文:
int main()
{
float a = 0;
while (scanf(" %f", & a) == 0)
{
scanf("%*s"); // additional "blind" read
printf("reenter");
}
printf("%f", a);
return 0;
}