while-loop - 如何在while循环中重新提示
问题描述
while(1)
{
printf("Please enter the first number:\n");
if(scanf(" %f",&num1))
break;
}
如果他们输入一个字符,我试图重新提示用户输入一个整数值。当我运行这段代码时,会创建一个无限循环。我用c语言
解决方案
#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
,从而暗示输入的值肯定是一个数值。
有关更多信息,请参阅这个惊人的答案
推荐阅读
- java - 减少 Room Database Repository 中的 AsyncTask 数量
- cuda - CUDA 块的最大数量?
- debugging - 如何在 Visual Studio 2017 调试模式下观看一列二维矩阵?
- node.js - 后端如何结合react-router和passport有效保护路由
- scala - 嵌套对象上的 Scala Spark 数据集错误
- php - 用令人敬畏的字体替换图像
- php - 当对象被回显语句中的变量引用时运行的魔术方法
- swift - 如何在 Swift 中呈现独特的 UITabBarControllers
- python - Python 外部可执行文件输出为二维数组
- c# - 自动射击时如何更改射速?