c输入的缓冲区
作业题:输入两个整数(12和37),从键盘输入‘A’和‘a’时,输出两个数中的较大数;从键盘输入‘B’和‘b’时,输出两个数中的较小数。
int a;
char c;
scanf("%d",&a);
c = getchar();
我的想法是从键盘输入一个int 赋值给a,然后输入一个char 赋值给c。但是在执行c = getchar()时不用键盘输入,直接执行后续代码。
查阅后发现是getchar()采用了缓冲区,而getch()才是立即获取,所以要想再用getchar()获取正确的值必须先清空缓冲区,如果是windows操作系统,用fflush(stdin)函数或rewind(stdin)函数,包含在stdio.h头文件中,而在linux下,则使用setbuf(stdin,NULL)或者while((c=getchar()) != '\n' && c != EOF);函数,同样是stdio.h头文件中。
int a;
char c;
scanf("%d",&a);
while((c=getchar()) != '\n' && c != EOF);
c = getchar();
修改后得到了理想的结果。
c输入的缓冲区的更多相关文章
- 关于C语言的输入-scanf、gets、getchar、getch、getline
找工作刷题,重拾C语言,发现对键盘输入掌握很生疏,现总结各类输入函数使用方法和注意事项如下. 1.scanf("格式说明",变量地址列表) scanf("%s" ...
- iostream/fstream中的输入输出流指针的绑定,tie函数的使用。
为了兼容c语言的输入输出,c++里面采用tie将输入输出流经行绑定,所以cin/cout并不是独立的.当执行cin时,cout同时会被执行.反之亦然. by defalut,cin is tied ...
- 使用BIOS进行键盘输入和磁盘读写
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 缓冲区(buffer)与缓存(cache)
下面介绍缓冲区的知识. 一.什么是缓冲区 缓冲区(buffer),它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区, ...
- 关于getchar函数缓冲区的问题
最近,看到有同学问我关于getchar()这个函数缓冲区的问题,结合我以前的学习,我将对getchar()进行一次总结,当然,这些都是别人已经提过的东西,我只是总结,接下来我们来看看. 首先,用get ...
- 如何处理Android中的防缓冲区溢出技术
[51CTO专稿]本文将具体介绍Android中的防缓冲区溢出技术的来龙去脉. 1.什么是ASLR? ASLR(Address space layout randomization)是一种针对缓冲区溢 ...
- 从hs_strcpy谈安全——缓冲区溢出
对于大多数的博友来说,hs_strcpy一定会很陌生,因为这个hs_strcpy这个关键字和我的工作有挂钩.本来目前就职于恒生电子,hs_strcpy是中间件中公司定义的字符串拷贝方法,在工作业余之余 ...
- scanf函数读取缓冲区数据的问题
标准I\O的缓冲类型 标准I\O根据不同的应用需求,提供了全缓冲.行缓冲.无缓冲三种缓冲方式. 全缓冲:只有当划定的缓冲区被填满或者数据读取至末尾时,才开始执行I\O操作(执行系统提供的read\wr ...
- C Primer Plus学习笔记(七)- 字符输入/输出和输入验证
单字符 I/O:getchar() 和 putchar() getchar() 和 putchar() 每次只处理一个字符 getchar() 和 putchar() 都不是真正的函数,它们被定义为供 ...
- PIE SDK缓冲区分析算法
1.算法功能简介 缓冲区分析是指有点.线.面实体为基础,自动建立其周围一定宽度范围内的缓冲区多边形图层,然后建立该图层与目标图层的叠加,进行分析而得到的所需的结果.他是用来解决邻近度问题的控件分析工具 ...
随机推荐
- spider_ip代理
title: spider_ip代理 author: 杨晓东 permalink: spider_ip代理 date: 2021-10-02 11:27:04 categories: - 投篮 tag ...
- TinyMapper使用 对象映射框架
方便的进行对象转换,仅作使用笔记 https://www.cnblogs.com/arvinzhang/p/8282922.html 例子: var result = new List<Equi ...
- Java语言程序设计课后小结
运行结果:Size s = Size.SMALL;此时,s = SMALL.Size t = Size.LARGE:此时t = LARGE. System.out.println(s==t).由于s和 ...
- Access-Control-Allow-Origin php跨域报错
Access-Control-Allow-Origin php跨域 解决办法: 1.PHP中echo:header(""Access-Control-Allow-Origin: * ...
- mysql增删改查json中的某个字段
创建表 1 CREATE TABLE t_json(id INT PRIMARY KEY, NAME VARCHAR(20), info JSON); 插入记录 1 INSERT INTO t_jso ...
- vue验证码倒计时60s
vue3验证码倒计时60s //倒计时60s const timeNum = ref(60); const countDown = ref(); const isShowSend = ref(true ...
- Markdown基本使用教程
Markdown学习 标题 一个'#+空格'是一级标题,'##+空格'二级标题 字体 hello: 斜体'+内容+' hello:加粗'+内容+' hello hello 引入 引用来源 分割线 '三 ...
- POJ--2386题C++实现
本题利用深度遍历的穷竭搜索法进行解题,即对每一个元素都对其进行各个方向的深度遍历,穷尽其周围 #include<iostream>#include<cstdio>using n ...
- 升级adb
adb 是没有自动升级的命令的,如果想要更新adb的版本,需要在网上找到自己想要的版本进行更新. 为什么要更新呢? 肯定是在使用中遇到了什么问题必须升级版本才能解决,如果不影响使用,那都无所谓.这里提 ...
- git合并指定分支的commit到主干上
1.先切换分支到master git checkout master 2.目前正处于主干上,执行命令,将分支从最后一个commit合并到主干上 git rebase --onto cb4023015f ...