首页 > 解决方案 > 如何在while循环中重新提示

问题描述

 while(1)
{
     printf("Please enter the first number:\n");
     if(scanf(" %f",&num1))
       break;
}

如果他们输入一个字符,我试图重新提示用户输入一个整数值。当我运行这段代码时,会创建一个无限循环。我用c语言

标签: while-loopprompt

解决方案


#include <stdio.h>  

int clean_stdin()
{
    while (getchar()!='\n');
    return 1;
}

int main(void)  
{ 
    int num1=0;  
    do
    {  
        printf("\nPlease enter the first number: ");
    } while ((scanf("%d", &num1)!=1 && clean_stdin()));

    return 0;  
}

解释

clean_stdin()仅当输入的值是包含非数字字符的字符串时,才会执行该函数。并且它总是返回True,从而暗示输入的值肯定是一个数值。

有关更多信息,请参阅这个惊人的答案


推荐阅读