作业题:输入两个整数(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输入的缓冲区的更多相关文章

  1. 关于C语言的输入-scanf、gets、getchar、getch、getline

    找工作刷题,重拾C语言,发现对键盘输入掌握很生疏,现总结各类输入函数使用方法和注意事项如下. 1.scanf("格式说明",变量地址列表) scanf("%s" ...

  2. iostream/fstream中的输入输出流指针的绑定,tie函数的使用。

      为了兼容c语言的输入输出,c++里面采用tie将输入输出流经行绑定,所以cin/cout并不是独立的.当执行cin时,cout同时会被执行.反之亦然. by defalut,cin is tied ...

  3. 使用BIOS进行键盘输入和磁盘读写

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  4. 缓冲区(buffer)与缓存(cache)

    下面介绍缓冲区的知识. 一.什么是缓冲区 缓冲区(buffer),它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区, ...

  5. 关于getchar函数缓冲区的问题

    最近,看到有同学问我关于getchar()这个函数缓冲区的问题,结合我以前的学习,我将对getchar()进行一次总结,当然,这些都是别人已经提过的东西,我只是总结,接下来我们来看看. 首先,用get ...

  6. 如何处理Android中的防缓冲区溢出技术

    [51CTO专稿]本文将具体介绍Android中的防缓冲区溢出技术的来龙去脉. 1.什么是ASLR? ASLR(Address space layout randomization)是一种针对缓冲区溢 ...

  7. 从hs_strcpy谈安全——缓冲区溢出

    对于大多数的博友来说,hs_strcpy一定会很陌生,因为这个hs_strcpy这个关键字和我的工作有挂钩.本来目前就职于恒生电子,hs_strcpy是中间件中公司定义的字符串拷贝方法,在工作业余之余 ...

  8. scanf函数读取缓冲区数据的问题

    标准I\O的缓冲类型 标准I\O根据不同的应用需求,提供了全缓冲.行缓冲.无缓冲三种缓冲方式. 全缓冲:只有当划定的缓冲区被填满或者数据读取至末尾时,才开始执行I\O操作(执行系统提供的read\wr ...

  9. C Primer Plus学习笔记(七)- 字符输入/输出和输入验证

    单字符 I/O:getchar() 和 putchar() getchar() 和 putchar() 每次只处理一个字符 getchar() 和 putchar() 都不是真正的函数,它们被定义为供 ...

  10. PIE SDK缓冲区分析算法

    1.算法功能简介 缓冲区分析是指有点.线.面实体为基础,自动建立其周围一定宽度范围内的缓冲区多边形图层,然后建立该图层与目标图层的叠加,进行分析而得到的所需的结果.他是用来解决邻近度问题的控件分析工具 ...

随机推荐

  1. git 与远程仓库关联返回 fatal: remote origin already exists 解决方法

    今天领导新建了一个代码仓库,我按照流程一步步推送代码,结果到了关联仓库的时候,返回 fatal: remote origin already exists(远程源已经存在) 下面是解决方法 1.删除远 ...

  2. php基础教程(一)

    语法: PHP的语法很简单 --直接看代码: <?php /*代码部分*/ ?> 这就是PHP代码的声明方式. 注:<? ?> 等这中写法也可以写,但是不建议这么写. 标记语句 ...

  3. 2022-3-24内部群每日三题-清辉PMP

    1.敏捷团队成员认为每日站会并不会增加价值,是因为小组规模太大.在回顾会议上,他们提出将现有的项目团队分解成更小的小组.Scrum主管应该怎么做? A.缩小团队规模,使站会更易于管理. B.在采取行动 ...

  4. Docker--搭建 Gitlab 容器并上传本地项目代码

    本文参考:https://www.cnblogs.com/poloyy/p/13969756.html 搭建 Gitlab 容器 搜索 gitlab 镜像 docker search gitlab 创 ...

  5. java统计一个文本文件英文单词

    package test;import java.io.*;import java.util.*;public class wordCount2 { public static void main(S ...

  6. OpenEuler 中C与汇编的混合编程

    2.5.1用汇编代码编程 将C代码编译成汇编代码 C代码: /**********a.c file********/ #include <stdio.h> extern int B(); ...

  7. js判断变量数据类型typeof、instanceof、Object.prototype.toString.call()、 constructor

    JavaScript有4种方法判断变量的类型,分别是typeof.instanceof.Object.prototype.toString.call()(对象原型链判断方法). constructor ...

  8. 1903021126 申文骏 Java 第三周作业 编写代码及运行

    项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第三周作业要求 博客名称 1903021126 申文骏 Java 第三周作业 编写代码及运行 要求 每道题要有题目,代码(使用插入代码, ...

  9. Pytest+allure+requests接口自动化

    实现功能 测试数据隔离: 测试前后进行数据库备份/还原 接口直接的数据依赖: 需要B接口使用A接口响应中的某个字段作为参数 对接数据库: 讲数据库的查询结果可直接用于断言操作 动态多断言: 可(多个) ...

  10. win10 + ubuntu 下右键新建md文件(转载)

    win10系统 由于前人的总结很不错,所以,在这里附上链接 原文链接 ubuntu系统(linux) 对于ubuntu系统下,这个操作更方便了. 原文链接 不仅是markdown文档,还有.doc.e ...