学习笔记_关于switch在whlie中无限循环的解决办法_C语言
学习笔记_关于switch在whlie中无限循环的解决办法_C语言
今天在做作业的时候突然发现一个问题
#include<stdio.h>
int main()
{int a;while(1){ printf("请输入:");scanf("%d",&a);switch(a){case 1:printf("你输入了1 \n\n");break;case 2:printf("你输入了2 \n\n");break;default:printf("输入有误! \n\n");break;}}return 0;
}
上面这段代码,应该除了输入1或者2,输入其他的都会输出“输入错误”,但是,如果不小心输入了字母或符号,程序就会进入无限循环,也就是说只能输入数字。
上网查了后发现,scanf函数是从缓冲区接受数值,而当我们输入字母或其他时,字符就一直留在缓冲区,再次循环,scanf再从缓冲区获取时还是字母,就相当跳过了scanf这一句,从而造成死循环。
经过测试后发现,只要把接受输入的变量定义在while循环里面,并给该变量赋值,在scanf之前清空缓冲区,这样程序就可以正常运行了。
#include<stdio.h>
int main()
{while(1){ int a = -1;fflush(stdin); //清理缓冲区printf("请输入:");scanf("%d",&a);switch(a){case 1:printf("你输入了1 \n\n");break;case 2:printf("你输入了2 \n\n");break;default:printf("输入有误! \n\n");break;}}return 0;
}
该文章仅为小白在学习上的个人见解,如果有错误,或者大神有更好的办法,还望不啬赐教。
学习笔记_关于switch在whlie中无限循环的解决办法_C语言相关推荐
- 【项目配置学习笔记】启动Tomcat的常出现的错误及其解决办法
错误一:打开startup.bat之后小窗口一闪而过 解决方式:重新配置JAVA_HOME环境变量如下(只需要配置到jdk文件目录即可) 实现:在浏览器输入http://localhost:8080, ...
- MySQL学习笔记_上(select查询)
上次整理了一些练习发到博客上了,也说要发基础的,整理了一下午才算是把查询那块的勉强整理完,下次再整理其他的,另外还在写设计模式和数据结构的草稿,写的差不多会慢慢发的,这两项算是副线发展,主线还是按 ...
- oracle11g中用asmlib配置磁盘组,ASM学习笔记_配置ASMLIB磁盘组
ASM学习笔记_配置ASMLIB磁盘组 目录 1 ASMLIB Introduction 2 虚拟机添加一个共享磁盘(块设备) 3 下载,安装ASMLIB 4 配置,使用ASMLib 磁盘组 #### ...
- MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结
MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...
- 系统架构师学习笔记_第六章(下)_连载
系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1 开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...
- Go学习笔记_环境搭建
Go学习笔记_环境搭建 Go背景知识 go的特点(官网): Build fast, reliable, and efficient software at scale- Go is an open s ...
- c语言用位运算将一个数清零,C语言学习笔记_位运算
C语言学习笔记_位运算 知识点记录 基本位运算 按位与:全1为1,见0为0:与1相与无变化,与0相与变为0:可用于特定位清零 按位或:见1为1,全0为0:与1相或变为1,与0相或无变化:可用于特定位置 ...
- 小猫爪:i.MX RT1050学习笔记15-FlexSPI-FLASH使用3-KEIL FLASH算法中的使用
小猫爪:i.MX RT1050学习笔记15-FlexSPI-FLASH使用3-KEIL FLASH算法中的使用 1 前言 2 FLASH算法解析 2.1 初始化Init 2.2 写操作 END 1 前 ...
- 数字IC设计学习笔记_静态时序分析STA_ STA基本概念
数字IC设计学习笔记 STA基本概念 1. STA基本概念 2. 时序弧概念 Timing Arc 3. 建立时间和保持时间概念 4. 时序路径概念Timing Path 5. 时钟域概念clock ...
最新文章
- swift 中showAlertTitle的使用
- JAVA的abstract修饰符 接口interface用法 抽象类和interface的差别
- 第十六届智能车竞赛赛道设计第一版本
- 退役-兵巨臂锻炼计划
- Lucene知识小总结4:索引的反删除
- 使用LXE_SP_CHECKSPELLING_MS进行ABAP文本拼写检查
- 拆卸invokedynamic
- acill排序 java_Map集合按照ASCII码从小到大(字典序)排序--JAVA
- 如何在.NET Core中创建API
- rf框架搭建_Robot framework(RF)基本使用
- 【X264系列】之命令参数解析
- Winform 水印TextBox
- 梅科尔工作室-PR第三次培训笔记(效果与转场及插件使用)
- Axure原型APP设计规范
- Excel表格快捷键技巧使用
- 分享:一个轻量级的企业Wiki和团队知识分享平台CMS
- worldpress小工具自定义html,WorldPress Grid html代码设置浅析,代码非常简洁
- 安卓原生系统_手机用这个App,系统变得比原生安卓还干净
- 专业的在线考试答题系统,快考题,高并发人数使用流畅
- VSCode远程开发 Resolver error: Error: Failed to install the VS Code Server
热门文章
- Python之numpy库——numpy.exp()函数
- 让你了解python的强大!【 登录新浪微博爬取粉丝信息】
- 【进制转换】二进制,十进制,八进制,16进制
- linux定时关机命令
- Android 应用内分屏查看(使用fragment)
- 懒汉单例模式 java_Java懒汉式单例模式详解
- JUC系列之模拟抢票(N人同时抢票,票不足系统补仓,N-M人继续抢票)
- 基于密度的聚类(Density-based clustering)-- 核密度估计(kernel density estimation)
- kali自带字典用法
- 零基础想学编程,应该学习哪一门语言呢?看看各种语言的简介!