解决C语言从键盘输入不合法数据所导致的死循环
2016-10-24 20:42
369 查看
当在C程序中输入不合法的数据时,往往可能会导致一些死循环出现,例如:
当输入小数时:
当输入字符时:
当输入整数加字符时:
都会出现这种死循环,
这时我们可以用一个if语句做判断
不过这里的小数和真数加字符串还是不行,会再次循环一边,系统会把小数认为整数加字符串:
但至少解决了单纯的字符串问题同时也不会导致死循环
#include<stdio.h> int main() { int k=1; while(k) { printf("请输入一个非零整数:"); scanf("%d",&k); printf("%d\n",k); } return 0; }
当输入小数时:
当输入字符时:
当输入整数加字符时:
都会出现这种死循环,
这时我们可以用一个if语句做判断
if(!scanf("%d",&k)) { printf("输入错误\n"); scanf("%s",&a); }
不过这里的小数和真数加字符串还是不行,会再次循环一边,系统会把小数认为整数加字符串:
但至少解决了单纯的字符串问题同时也不会导致死循环
相关文章推荐
- iterator 遍历数据循环输入 input中的解决办法。
- 有一个数列(1)循环输出数列的值(2)求数列中所有数值的和(3)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含次数
- C语言从键盘输入数据
- 解决给定义的整型数据输入字符时出现死循环的问题
- 44 C语言从键盘输入数据
- 解决C++中误输入导致while结构死循环的问题
- scanf控制用户输入数据的合法范围_算法_c语言
- C语言 重定向 从txt文件取数据作为输入代替键盘输入
- 解决cin因为输入错误的数据类型进入死循环的问题
- C语言技巧【枚举作为函数变量类型】【数据输入与输出】【do while循环体内scanf函数被跳过,循环结束】【用const修饰函数的参数】
- For循环中由于ajax异步导致的问题解决(增加alert数据正常,去掉alert之后数据错误)
- HDU 1422 循环的序列,可以利用输入数据两次解决
- 解决windows的数据访问保护(DEP)导致windows installer不能工作的问题
- 如何解决BitBlt打印BMP,数据量太大导致速度效率慢的问题
- c语言+数据结构不固定输入元素个数时整数的二叉存储式
- Oracle数据文件丢失导致数据库启动故障解决一例
- NUnit单元测试整理高级篇之针对输入数据比较多的TestCase的解决办法
- c#循环访问dataset 在table中输入数据
- ubuntu数字小键盘不能输入数字解决办法