Nic*_*san 5 c string while-loop
我有一个"分钟"变量,我希望用户输入一个正数.
int main(void)
{
float minutes;
minutes = -1;
printf("Find out how many bottles worth of water your showers use!\n");
printf("How many minutes do you spend in the shower? ");
scanf("%f", &minutes);
while(minutes < 0)
{
printf("Please enter a positive number: ");
scanf("%f", &minutes);
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于数字.如果分钟> = 0,它接受它,如果分钟<0,它会一直询问.如果我输入一个字符串,它会无限循环
printf("Please enter a positive number: ");
Run Code Online (Sandbox Code Playgroud)
从来没有给我机会输入新的价值.为什么这样,我该如何解决?谢谢!
如果未输入数值,则输入缓冲区中的任何类型都将保留.您可以通过读取返回值来检查这一点,该值scanf
告诉您读取的项目数.如果为0,则可以使用getchar
读取字符直到下一个换行符刷新缓冲区.
int main(void)
{
int rval, c;
float minutes;
minutes = -1;
printf("Find out how many bottles worth of water your showers use!\n");
printf("How many minutes do you spend in the shower? ");
rval = scanf("%f", &minutes);
if (rval == 0) {
while (((c = getchar()) != '\n') && (c != EOF));
}
while(minutes < 0)
{
printf("Please enter a positive number: ");
rval = scanf("%f", &minutes);
if (rval == 0) {
while (((c = getchar()) != '\n') && (c != EOF));
}
}
}
Run Code Online (Sandbox Code Playgroud)