c - 使用 getchar() 时进行多次完整性检查,我该如何避免?
问题描述
我目前正在制作弹丸运动计算器。没有什么超级复杂的,但是我正在使用如下的健全性检查:
printf("Please enter initial velocity: ");
while (!scanf("%lg", &velocity)|| velocity<0){
getchar();
printf("Velocity is not valid, enter again: ");
}
它在停止负数和单个字符方面非常有效,但是当用户输入一个包含多个字符的单词时,第二个 printf 将重复等于单词中的字符数。
当用户输入一个单词时,我该如何做到这一点,健全性检查仍然可以正常运行,但只运行一次?
解决方案
循环调用getchar()
,直到看到换行符:
printf("Please enter initial velocity: ");
while (!scanf("%lg", &velocity)|| velocity<0){
while (getchar() != '\n');
printf("Velocity is not valid, enter again: ");
}
推荐阅读
- python - 基于另一个函数的返回参数的退出函数?
- autodesk-forge - Autodesk Forge 导入 IFC 失败
- ios - 二进制文件已从 iTunesConnect 的活动中删除
- java - 如何从 Java Activity 传递数据以响应本机?
- git - “blob”真的意味着 git 中的“二进制大对象”吗?
- angular - 尝试将输入类型实现为角度材料中的文件上传
- java - Apache Oltu 以外的 Java OAuthClient
- c# - C# - 从 Directory.GetDirectories() 和 Directory.GetFiles() 中排除目录和文件
- javascript - JavaScript 数组自行排序
- mysql - 获取加入第二个表的聚合平均值并将它们显示在第一个表中的每个值旁边