scanf()语句错误读取

在上一星期的文章中,每一次遇到功能选择时,总是会以输入选项所代表的数字表示,而在让一个大神帮忙看看时,发现一个问题:当输入不是数字时scanf()语句将保持不读取状态,当程序运行到这里时scanf()将会维持上一次读取数,不读取新内容,检查了好久都不知道问题,当时大神发话,这绝对是scanf()读取出问题了,应当有一个函数可以清空缓存还是什么的,解决这个问题,结果回来一查,立即对大神佩服的五体投地。

以这个程序为例:

#include<stdio.h>int main()
{int array[10];int temp;int i,j;printf("input ten numbers(between -32768 and +32767):\n");for(i=0;i<10;i++){scanf("%d",&temp);if(temp<-32768 || temp>32767){i--;printf("number must between -32768 and +32767\ntry again:\n");continue;}else{array[i]=temp;}}printf("your numbers:\n");for(j=0;j<10;j++){printf(" %d ",array[j]);}printf("\ngod bye\n");return 0;
}

如果在开始输入时输入一个字母将进入死循环。

输入:q

输出:

如果在输入中输入一个字母scanf将会自动读取上一次输入的值,不能再次输入。

输入:1 2 3 4 q 5 6 7 8 9

输出:1 2 3 4 4 4 4 4 4 4

输入:1 2 3 4 q

输出:1 2 3 4 4 4 4 4 4 4

要解决这个问题需要在循环中添加一个清空缓存的语句

fflush(stdin);

但这样scanf()每次只能读取一个数,因此需要用enter来间隔。

输入:1 2 3 4 q 5 6 7 8 9

输出:1 2 3 4 5 6 7 8 9

(因为再输入q时,scanf()未读取q,但i仍加1,因此只输入9个数就完成程序)



C语言:scanf()语句错误读取相关推荐

  1. c语言error语句错误,【资料】C语言错误信息中文解释

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.#operator not followed by macro argument name "#"运算符后无宏变元名.在宏定义中, ...

  2. 【C语言】scanf语句里关于%c的问题

    在使用scanf("%c",&ch):时,如果后面又跟了一个scanf语句的话,这个scanf语句会读取一个回车键. 近日,在敲代码时,发现如果如果两个scanf语句叠加在 ...

  3. c语言scanf运行出现吃回车,scanf读取回车

    c语言 scanf 和 读取回车 我想用scanf读文件( program scanf()能把回车键读进去吗?数组能赋予回车值吗? //可以读入回车符,也可以给数组赋值 //具体看下例 #includ ...

  4. c语言switch scanf语句,c语言switch语句 谢谢·!~!~

    c语言switch语句 谢谢·!~!~以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言switch语句 谢谢·!~ ...

  5. c语言scanf返回值错误,c语言scanf返回值

    1. scanf 函数是有返回值的,它的返回值可以分成三种情况 1) 正整数,表示正确输入参数的个数.例如执行 scanf("%d %d", &a, &b); 如果 ...

  6. c语言中scanf(%7.2f,a);合法吗,C语言,语句scanf(7.2f,a);是一个合法的scanf函数?...

    首先,这个语句显然是有问题的,但是能编译通过,说明是合法的.那么我们就需要弄清楚编译器是怎么理解这条语句的,以及运行时这条语句做了什么. 原问题是"C语言,语句scanf("7.2 ...

  7. c语言——程序出现C4996:scanf 等错误的解决方法

    c语言--程序出现C4996:scanf 等错误的解决方法(不用scanf_s替换解决) 问题实例 解决方法 方法1 方法2 在VS编译器下,编写的c语言程序在调试编译时可能会出现c4996警告或错误 ...

  8. c语言scanf附加格式*,C语言的scanf语句格式

    满意答案 pihiac 2014.09.05 采纳率:45%    等级:7 已帮助:460人 scanf语句的一般格式如下: scanf("格式字符串", 地址,-); scan ...

  9. C语言scanf:读取从键盘输入的数据(含输入格式汇总表)

    程序是人机交互的媒介,有输出必然也有输入,第三章我们讲解了如何将数据输出到显示器上,本章我们开始讲解如何从键盘输入数据.在C语言中,有多个函数可以从键盘获得用户输入: scanf():和 printf ...

最新文章

  1. main函数的参数问题 (转载)
  2. 用神经网络分类里和外
  3. Spring的自动装配方法
  4. vuex的计算属性_Vuex详细介绍
  5. Mybatis-Generator(MBG)教程与Idea的MBG插件
  6. React中后台管理系统添加广告分类显示不出来
  7. 结果集 tostring_关于避免对toString()结果进行解析或基于逻辑的美德
  8. 《SolidWorks 2013中文版完全自学手册》——2.5 添加几何关系
  9. 计步 android 源码,android版简易计步器源码
  10. Unity技术手册-编辑器基础入门万字大总结
  11. 30.kafka数据同步Elasticsearch深入详解(ES与Kafka同步)
  12. 1677. 【USACO】山峰暸望
  13. vue中Uncaught (in promise) TypeError: Object(...) is not a function报错
  14. 2018面试题目总结1
  15. nvidia显卡控制面板的安装位置
  16. 接口数据量太大,导致内存溢出,解决办法
  17. linux yum安装iscsi,CentOS 安装配置iscsi共享存储
  18. Python3下基于bs4和sqlalchemy的爬虫实现
  19. 【Python与SEO】搜狗微信搜索下拉框词采集多线程/异步采集源码公布
  20. LeetCode每日一题——12.11Dota2 参议院

热门文章

  1. boss直聘账号异常登不上_【技术变现小技巧】-- Boss直聘 批量求简历
  2. c语言 游戏控制器映射,如何在Nintendo游戏控制器上映射控件以充当PC的键盘
  3. laravel 基础使用
  4. web上传zip大文件,java服务接收并解压ZIP文件
  5. 三种设计师常用的字体设计手法
  6. configobj安装_linux (centos)安装Anaconda
  7. ES6之与Symbol.match
  8. 【机器学习|数学基础】Mathematics for Machine Learning系列之线性代数(2):n阶行列式、对换
  9. 爬楼梯问题/上台阶问题
  10. 3月27日,我们在毛概课上进行了淞沪会战主题的汇报