while((ch=getchar())!=EOF&&ch != '\n');消除非法输入
来源:互联网 发布:新垣结衣 整容 知乎 编辑:程序博客网 时间:2024/06/05 06:55
第一个程序接收用户输入的两个整数并打印
#include <stdio.h>int main() { int a, b; printf("请输入两个正整数:\n"); scanf("%d", &a); scanf("%d", &b); printf("a = %d\nb = %d\n", a, b); return 0;}
如果输入 123 和 456,程序可以正常运行;而如果输入了123asd 和 456(实际上敲第一次回车后就结束了,根本没机会输入第二个值),那么第一个数被赋值为123,第二个数是一个垃圾值。
这是因为,scanf函数对输入值进行转换时,它只读取需要的字符,a读取了123;输入行包含的最后一个值的剩余部分仍会留在那里,等待被读取。然后asd被b读取了,b就是一个垃圾值。
在两个scanf之间插入一条语句while ((ch = getchar()) != EOF && ch != '\n');
可以消除非法输入。
#include <stdio.h>int main() { int a, b; int ch; // 定义一个整型变量接收非法输入 printf("请输入两个正整数:\n"); scanf("%d", &a); while ((ch = getchar()) != EOF && ch != '\n'); // 空循环,读取输入流内的剩余内容 scanf("%d", &b); printf("a = %d\nb = %d\n", a, b); return 0;}
阅读全文
0 0
- while((ch=getchar())!=EOF&&ch != '\n');消除非法输入
- while((ch=getchar())!=EOF && ch != '\n')
- 含义while((ch=getchar())!='#'){},while(ch=getchar(),ch!='#'),while(ch=getchar() && ch!='#')
- 关于((ch = getchar()) != EOF),ch声明为整型的问题
- error:while(ch = fgetc(fStream)!= EOF)和while(ch = fgetc(fStream)&& ch != EOF)是有问题的
- C++误区一 char ch = getchar()
- 利用(while(getchar() != '\n');)消除回车
- while (getchar() != '\n')
- $result = curl_exec($ch);
- while ( (c = getchar())!= EOF)
- while((c=getchar())!=EOF)
- while((ch1=getchar())!=EOF) 是什么意思
- while ( (c = getchar())!= EOF)
- while((c=getchar()) != EOF)
- 选择排序---while( scanf("%d",&n)!= EOF)与getchar()简介及其存在的问题,
- 初始化char *ch =字符串
- 关于while ( cin >> ch )输入结束问题
- 用法char ch=getchar()正确性详解 《C陷阱与缺陷》 chap5.1
- oracle
- Android入门篇(一)了解androidstudio开发软件
- 软件工程(c编码实践篇)学习总结
- 第一步: 如何做出類似IOS APP的網頁APP
- LED
- while((ch=getchar())!=EOF&&ch != '\n');消除非法输入
- 2017年11月10日笔试题总结
- hdu 1573 X问题(一元线性同余方程组)
- python 直接访问类的私有属性或方法
- 【mac笔记】Jenkins配置发送邮件
- Django Web项目:Fresh Everyday
- sleep()在ES7中利用Promise和async/await的优雅实现
- Mac上使用virtualenv搭建虚拟环境
- 【Nanopi Duo】+网易云音乐运行