c编程scanf不会读取输入两次
c programming scanf will not read input twice
我正在用 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;
}
您需要清理输入。试试这个
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a = 0;
while(scanf("%f", &a) == 0) {
printf("reenter\n");
while((getchar()) != '\n');
}
printf("%f", a);
return 0;
}
我正在用 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;
}
您需要清理输入。试试这个
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a = 0;
while(scanf("%f", &a) == 0) {
printf("reenter\n");
while((getchar()) != '\n');
}
printf("%f", a);
return 0;
}