学习笔记_关于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语言相关推荐

  1. 【项目配置学习笔记】启动Tomcat的常出现的错误及其解决办法

    错误一:打开startup.bat之后小窗口一闪而过 解决方式:重新配置JAVA_HOME环境变量如下(只需要配置到jdk文件目录即可) 实现:在浏览器输入http://localhost:8080, ...

  2. MySQL学习笔记_上(select查询)

      上次整理了一些练习发到博客上了,也说要发基础的,整理了一下午才算是把查询那块的勉强整理完,下次再整理其他的,另外还在写设计模式和数据结构的草稿,写的差不多会慢慢发的,这两项算是副线发展,主线还是按 ...

  3. oracle11g中用asmlib配置磁盘组,ASM学习笔记_配置ASMLIB磁盘组

    ASM学习笔记_配置ASMLIB磁盘组 目录 1 ASMLIB Introduction 2 虚拟机添加一个共享磁盘(块设备) 3 下载,安装ASMLIB 4 配置,使用ASMLib 磁盘组 #### ...

  4. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  5. 系统架构师学习笔记_第六章(下)_连载

    系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1  开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...

  6. Go学习笔记_环境搭建

    Go学习笔记_环境搭建 Go背景知识 go的特点(官网): Build fast, reliable, and efficient software at scale- Go is an open s ...

  7. c语言用位运算将一个数清零,C语言学习笔记_位运算

    C语言学习笔记_位运算 知识点记录 基本位运算 按位与:全1为1,见0为0:与1相与无变化,与0相与变为0:可用于特定位清零 按位或:见1为1,全0为0:与1相或变为1,与0相或无变化:可用于特定位置 ...

  8. 小猫爪: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 前 ...

  9. 数字IC设计学习笔记_静态时序分析STA_ STA基本概念

    数字IC设计学习笔记 STA基本概念 1. STA基本概念 2. 时序弧概念 Timing Arc 3. 建立时间和保持时间概念 4. 时序路径概念Timing Path 5. 时钟域概念clock ...

最新文章

  1. swift 中showAlertTitle的使用
  2. JAVA的abstract修饰符 接口interface用法 抽象类和interface的差别
  3. 第十六届智能车竞赛赛道设计第一版本
  4. 退役-兵巨臂锻炼计划
  5. Lucene知识小总结4:索引的反删除
  6. 使用LXE_SP_CHECKSPELLING_MS进行ABAP文本拼写检查
  7. 拆卸invokedynamic
  8. acill排序 java_Map集合按照ASCII码从小到大(字典序)排序--JAVA
  9. 如何在.NET Core中创建API
  10. rf框架搭建_Robot framework(RF)基本使用
  11. 【X264系列】之命令参数解析
  12. Winform 水印TextBox
  13. 梅科尔工作室-PR第三次培训笔记(效果与转场及插件使用)
  14. Axure原型APP设计规范
  15. Excel表格快捷键技巧使用
  16. 分享:一个轻量级的企业Wiki和团队知识分享平台CMS
  17. worldpress小工具自定义html,WorldPress Grid html代码设置浅析,代码非常简洁
  18. 安卓原生系统_手机用这个App,系统变得比原生安卓还干净
  19. 专业的在线考试答题系统,快考题,高并发人数使用流畅
  20. VSCode远程开发 Resolver error: Error: Failed to install the VS Code Server

热门文章

  1. Python之numpy库——numpy.exp()函数
  2. 让你了解python的强大!【 登录新浪微博爬取粉丝信息】
  3. 【进制转换】二进制,十进制,八进制,16进制
  4. linux定时关机命令
  5. Android 应用内分屏查看(使用fragment)
  6. 懒汉单例模式 java_Java懒汉式单例模式详解
  7. JUC系列之模拟抢票(N人同时抢票,票不足系统补仓,N-M人继续抢票)
  8. 基于密度的聚类(Density-based clustering)-- 核密度估计(kernel density estimation)
  9. kali自带字典用法
  10. 零基础想学编程,应该学习哪一门语言呢?看看各种语言的简介!