试图在C++中验证双精度有效输入的循环错误
loop error trying to verify valid input to double in C++
我正在尝试验证双变量的字符输入是否具有正确的数据类型。
double number = 0;
int validCheck = 0;
char another = 'y';
while(another == 'y')
{
cout<<"Please enter a number: ";
validCheck = scanf("%lf", &number);
while (validCheck !=1)
{
cout<<"Invalid input, please enter a number: ";
validCheck = scanf("%lf", &number);
}
当我编译它时,如果我给出了一个有效的输入,它会很好地工作,并且无效的输入确实会将它放入while循环,但它并没有检查另一个输入,而是在我的控制台上滥发"无效输入,请输入一个数字:",甚至没有要求新的输入。我错过了什么?
无效输入保留在输入缓冲区中,因此scanf
总是使用相同的格式错误的输入。您需要清除输入缓冲区,例如
int c;
do {
c = getchar();
}while(c != 'n' && c != EOF);
相关文章:
- 偶尔多次请求用户输入循环
- 如何用字符终止整数输入循环?
- 菜单选择器不接受有效输入
- 循环try..catch ..确保输入有效或使用控制语句
- CIN 到矢量输入循环无限期.为什么
- 结构卡在输入循环中的函数
- C++Visual Studio 2017中,无法输入循环中的变量
- 用于读取文件的输入循环
- 检查输入是有效的C 循环时的DO
- 正在检查用户的有效输入并与文本文件进行比较
- 试图在C++中验证双精度有效输入的循环错误
- 要求使用cout/cin进行有效输入
- C++ 文件输入循环的困难
- 输入循环 while 函数
- 为什么我什至会在检查有效输入时使用 istream::ignore
- 巧克力游戏:输入循环,不插入循环或打印游戏统计数据
- 使用自动输入循环错误"auto must have an initializer"
- 通过用户输入循环的更好方法
- Scala/ c++:尾部递归函数代替输入循环
- 如何有效地循环图像在Qt