c - c编程scanf不会两次读取输入
问题描述
我正在用 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 尝试解析它。
推荐阅读
- reactjs - 打字稿:找不到“bin”、“src”、“test”的类型定义文件
- oracle - 在 Oracle 中按名称访问记录字段
- python - Python:在 Selenium Ms.Edge(铬)Webdriver 中禁用图像
- php - 缩小使用 sort() 函数的 PHP 代码
- java - 在井字游戏中确定获胜者时,如何避免重复?
- oracle - 更新后第三方应用程序在任何时候都无法看到来自 oracle 的数据
- azure - Azure CLI 监控所有虚拟机的指标
- jquery - 在 Codeigniter 中对 Join Table 查询进行 DataTable 服务器端处理
- python - 具有模型属性和 2 个输入的 TensorFlow 模型无法在数据集上进行预测
- python - 如何解决运行 res.raise_for_status() 的给定错误。我正在尝试解析来自亚马逊的 HTML