第一个程序接收用户输入的两个整数并打印

#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;
}

while((ch=getchar())!=EOFch != '\n');消除非法输入相关推荐

  1. getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析...

    2013-07-18 21:35:58 getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析. char是字符型数 ...

  2. C语言由scanf(“%d“,)非法输入字符造成的死循环及其解决方案

    声明:此文章仅作为C语言学习历程中的思路整理,用于解决入门阶段较为浅显的问题,如有错误还请指正. IDE:小熊猫 Dev-C++ 现象描述: 代码要求实现用户输入1或2,通过scanf("% ...

  3. c语言表达ch是大写英文字母,C语言:将小写字母转换为大写字母。 1.倒数第三行:while ((ch=getchar())!='\n') 怎么理解呢?...

    C语言:将小写字母转换为大写字母. 1.倒数第三行:while ((ch=getchar())!='\n') 怎么理解呢? 答案:4  信息版本:手机版 解决时间 2019-10-06 13:38 已 ...

  4. 详解while((ch = getchar()) != EOF)

    问题 博主在学习C语言的过程中,遇到了这么一条语句 int ch; while((ch = getchar()) != EOF) putchar(ch); 其运行如下图所示 第一行是我的键盘输入:I ...

  5. Java黑皮书课后题第4章:*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示。编写程序,提示用户输入一个小写或大写字母,然后显示对应数字。对于非字母输入,提示非法输入

    *4.15(电话键盘)电话上的国际标准字母/数字映射如下所示.编写程序,提示用户输入一个小写或大写字母,然后显示对应数字.对于非字母输入,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目 ...

  6. Java黑皮书课后题第4章:*4.13(判断元音还是辅音)编写程序,提示用户输入一个字母,判断该字母是元音还是辅音。对于非字母的输入,提示非法输入

    *4.13(判断元音还是辅音)编写程序,提示用户输入一个字母,判断该字母是元音还是辅音.对于非字母的输入,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目概述 *4.13(判断元音还是辅 ...

  7. Java黑皮书课后题第4章:*4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数。对于不正确的输入数字,提示非法输入

    *4.11(十进制转十六进制)编写程序,提示用户输入0~15之间的一个整数,显示其对应的十六进制数.对于不正确的输入数字,提示非法输入 题目 题目概述 运行示例 破题 代码 题目 题目概述 *4.11 ...

  8. 使用parseInt转换规范非法输入

    在上一篇文章中,我们讲解了如何运用测试用例以及去应用,但是考虑到用户可能的一些非法输入导致的问题,我们需要对这些问题想一个好的解决方案. 在这里我们运用parseInt函数来将string类型的字符转 ...

  9. Linux下批量把GDK编码的文章转化为UTF-8编码的文章以及“iconv: 未知 xxx 处的非法输入序列”错误处理

    Linux下批量转换GBK文件到UTF-8编码方法 查看文件编码 file -i filename 1.递归转换(包括子文件夹) find default -type d -exec mkdir -p ...

最新文章

  1. hbase查询_【从零单排HBase】HBase高性能查询揭秘
  2. .NET中Redis安装部署及使用方法简介附-开源Redis操作辅助类
  3. netty大白话--概念(二)
  4. 集群tomcat+session共享
  5. 准备 macvlan 环境 - 每天5分钟玩转 Docker 容器技术(54)
  6. 深度学习在图像检索的应用
  7. CentOS 7 + PostgreSQL + PostGIS + GeoServer安装
  8. 北京2018积分落户名单
  9. c语言次方函数,C 求n次方函数
  10. AI芯片:Edge TPU(谷歌出品)【在边缘(edge)设备上运行的“专用集成芯片”】【量化操作:Edge TPU使用8 位权重进行计算,而通常使用32位权重。所以我们应该将权重从32位转换为8位】
  11. java验证码提交错误时_验证码输入错误后自动刷新验证码
  12. java应届毕业生面试技巧
  13. H - Shifting Sort
  14. 2011天涯上令人心酸至极的微瞬间
  15. 服务器虚拟化 魔力象限,Magic Quadrant for x86 Server Virtualization (魔力象限x86服务器虚拟化).pdf...
  16. renderjs的使用
  17. 4张图搞懂Salesforce的认证体系(附新手考证攻略)
  18. 【学习笔记】群论入门
  19. 【无线串口模块应用实例】防小人不防君子的智慧安防监测系统
  20. 金蝶K3与AUTOCAD2007兼容性,打开金蝶K3时候提示配置问题

热门文章

  1. 虚拟服务器启动顺序,认识VPC2007的虚拟机系统启动顺序
  2. ftp服务器网页空白,ftp服务器网页空白
  3. DL之self-attention:self-attention自注意力机制的简介、应用之详细攻略
  4. DL:深度学习模型概览(包括DNN、CNN、RNN等)的简介、网络结构简介、使用场景对比之详细攻略
  5. Py之lightgbm:lightgbm的简介、安装、使用方法之详细攻略
  6. Ubuntu之GCC:GCC编译器的简介、安装、使用方法之详细攻略
  7. 成功解决打包时不能import自定义的包或库出现运行exe时No module named 缺少包
  8. 05-配置数据库的远程连接 创建hive数据库的时候要选择latin1
  9. 使用ANY和ALL条件
  10. git的简单操作命令