首页 > 解决方案 > 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”时,循环将继续:

在此处输入图像描述

如果我输入一个当前值,它会得到它应该得到的。

标签: cscanfcodeblocks

解决方案


处理这种事情的一种方法是接收一个字符串(选择你在函数上中毒),然后使用 sscanf 尝试解析它。


推荐阅读