getchar()清空缓冲区剩余的空格回车等转义字符

news2024/11/24 10:37:34

getchar()清空缓冲区剩余的空格回车等转义字符

多次使用scanf输入字符会出现以下错误:

#include <stdio.h>
int main()
{
	char a,b,c,d,e,f;
	printf("input character a,b\n");
	scanf("%c,%c",&a,&b);
	printf("a = %c,b = %c\n",a,b);
	
	printf("input character c,d\n");
	scanf("%c,%c",&c,&d);
	printf("c = %c,d = %c\n",c,d);
	
	printf("input character e,f\n");
	scanf("%c,%c",&e,&f);
	printf("e = %c,f = %c\n",e,f);
}

在这里插入图片描述
分析如下:
1 、输入语句scanf(“%c,%c”,&a,&b)中,“%c,%c”中间有“,”,所以键盘输入时候,两个字符间应该用“,”隔开;
2、第一个scanf输入为"3,h/n"(scanf以回车、空格、制表符Tab结束),键入的字符中有转义字符回车\n,该转义字符会存到缓冲区队首。第二个scanf读入时首先检查缓冲区,发现缓冲区里还有 \n ,而且正好匹配%c,于是直接读走 \n 。
在这里插入图片描述
改进方法1:scanf语句后面加getchar();
在每一个名字读取结束后位于缓冲区队首的是转义字符回车,需要做清洗处理。
scanf语句之后使用getchar做清洗处理。把缓冲区的\n读走并且丢弃。
getchar()是清空一个字符,如果缓冲区还有多余的字符则会被正常使用。

#include <stdio.h>
int main()
{
	char a,b,c,d,e,f;
	printf("input character a,b\n");
	scanf("%c,%c",&a,&b);
	printf("a = %c,b = %c\n",a,b);
	getchar();     //在每一个名字读取结束后位于缓冲区队首的是转义字符回车,需要做清洗处理。
	
	printf("input character c,d\n");
	scanf("%c,%c",&c,&d);
	printf("c = %c,d = %c\n",c,d);
	getchar();     //在每一个名字读取结束后位于缓冲区队首的是转义字符回车,需要做清洗处理。
	
	printf("input character e,f\n");
	scanf("%c,%c",&e,&f);
	printf("e = %c,f = %c\n",e,f);
}

在这里插入图片描述

改进方法2:scanf语句中,加入空格
在%c之前加入空格,空格可以吸收回车符、空格。
%c前没空格,scanf()将读取标准输入流中的第一个字符,%c前有空格,scanf()则读取标准输入流中第一个非空白字符,屏蔽了空白字符(回车、空格、制表符Tab)。

#include <stdio.h>
int main()
{
	char a,b,c,d,e,f;
	printf("input character a,b\n");
	scanf(" %c,%c",&a,&b); \\%c前有一个空格
	printf("a = %c,b = %c\n",a,b);
	
	printf("input character c,d\n");
	scanf(" %c,%c",&c,&d); \\%c前有一个空格
	printf("c = %c,d = %c\n",c,d);
	
	printf("input character e,f\n");
	scanf(" %c,%c",&e,&f); \\%c前有一个空格
	printf("e = %c,f = %c\n",e,f);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/859878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【字节跳动青训营】后端笔记整理-1 | Go语言入门指南:基础语法和常用特性解析

**本人是第六届字节跳动青训营&#xff08;后端组&#xff09;的成员。本文由博主本人整理自该营的日常学习实践&#xff0c;首发于稀土掘金&#xff1a;&#x1f517;Go语言入门指南&#xff1a;基础语法和常用特性解析 | 青训营 本文主要梳理自第六届字节跳动青训营&#xff…

C++-排序

文章目录 常数操作时间复杂度空间复杂度O(N^2) O(1) 数据情况发生变化不影响流程 选择排序冒泡排序使用抑或运算提取出不为零的数最右边的1 1. 实现两个变量交换值2. 数组中一种数字出现奇数次,other是偶数次,找到那一种数字3. 数组中有两种数字出现奇数次,other是偶数次,找到那…

修改SqlSugar的WebFirst 代码生成器适配瀚高数据库

WebFirst代码生成器是果糖大数据团队开发的新一代 高性能 代码生成器&数据库设计工具&#xff0c;由.net core 3.1 sqlsugar 开发 &#xff08;此处摘抄自官网 &#x1f601;&#xff09; 官网地址 WebFirst 目前官网发布的版本并没有集成瀚高数据库的支持&#xff0c;本文…

hive on tez资源控制

sql insert overwrite table dwintdata.dw_f_da_enterprise2 select * from dwintdata.dw_f_da_enterprise; hdfs文件大小数量展示 注意这里文件数有17个 共计321M 最后是划分为了21个task 为什么会有21个task&#xff1f;不是128M 64M 或者说我这里小于128 每个文件一个map…

这34道接口测试 Jmeter面试题,你会吗?

接口测试 & Jmeter面试题 一、接口测试 1、接口测试流程 1、首先是从开发那里拿到API接口文档&#xff0c;了解接口业务、包括接口地址、请求方式&#xff0c;入参、出参&#xff0c;token鉴权&#xff0c;返回格式等信息。 2、然后使用Postman或Jmeter工具执行接口测试…

【图像恢复】基于交替乘子方法(ADMM)图像恢复算法研究[固定点收敛和应用](Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

form 表单恢复初始数据

写表单的时候&#xff0c;想做到&#xff0c;某个操作时&#xff0c;表单恢复初始数据 this.$options.data().form form 是表单的对象 <template><div><el-dialog title"提示" :visible.sync"dialogVisible"><el-form :model"…

前端学习记录~2023.7.30~JavaScript重难点实例精讲~第4章 对象

第 4 章 对象 前言4.1 对象的属性和访问方式4.1.1 对象的属性&#xff08;1&#xff09;数据属性&#xff08;2&#xff09;访问器属性 4.1.2 属性的访问方式&#xff08;1&#xff09;使用.访问属性&#xff08;2&#xff09;使用[]访问属性&#xff08;3&#xff09;两者的不…

虫情测报灯的功能优势

KH-CQPest虫情测报灯是一款利用现代光、电、数控集成的虫情测报仪器。它可以通过光学/药物诱虫方式实现自动诱虫&#xff0c;并将诱捕的害虫进行无公害红外远程自动处理&#xff0c;在完成杀虫、虫体分散、拍照、运输等作业后&#xff0c;KH-CQPest虫情测报灯会自动将监测到的虫…

Clone函数

概述 Clone函数是一种用于复制的计算机函数。在程序编写中&#xff0c;除了自定义一个拷贝构造函数来实现对象复制外&#xff0c;还可以实现一个clone函数。这需要借助编译器实现的一个隐藏拷贝构造函数&#xff0c;这样的做法&#xff0c;更省心。 中文名clone函数外文名clon…

ELF program/section segment解析

ELF program/section segment解析 1 elf program segment1.1 elf program header1.2 ELF32和ELF64示例1.2.1 ELF32 program segment1.2.2 ELF64 program segment 1.3 elf program segment数据流向图 2 elf section2.1 eld section header2.2 ELF32和ELF64示例2.2.1 ELF32 secti…

带你玩转双链表

文章目录 前言一、双链表的思路二、带头循环双链表的实现分析二、带头循环双链表的实现11.带头循环双链表实现头文件总览2.带头循环双链表的初始化3.带头循环双链表的插入4.带头循环双链表的打印和销毁5.带头循环双链表的查找和删除 三、带头循环双链表的实现21.带头循环双链表…

软考高级之系统架构师之数据通信与计算机网络

概念 OSPF 在划分区域之后&#xff0c;OSPF网络中的非主干区域中的路由器对于到外部网络的路由&#xff0c;一定要通过ABR(区域边界路由器)来转发&#xff0c;既然如此&#xff0c;对于区域内的路由器来说&#xff0c;就没有必要知道通往外部网络的详细路由&#xff0c;只要由…

文章被限流了?上不了热榜?

文章目录 惨&#xff01;惨&#xff01;&#xff01;惨&#xff01;&#xff01;&#xff01;热榜&#x1f525;热榜&#x1f525;&#x1f525;热榜&#x1f525;&#x1f525;&#x1f525;粉丝破万INSCODE AI 创作 1INSCODE AI 创作 2INSCODE AI 创作 3联系客服 最近不知道C…

Mybatis Plus条件构造器LambdaQueryWrapper

官网地址 Mybatis Plus条件构造器LambdaQueryWrapper 目前数据库数据情况&#xff0c;User表 iduser_namebirthdaysexaddress1张12023-08-10男123163.com2李12023-08-10女222163.com3张22023-08-10女999163.com4张32023-08-10男9994qq.com ## 简单介绍 如何使用各种场景 方法…

Flink源码之TaskManager启动流程

从启动命令flink-daemon.sh可以看出TaskManger入口类为org.apache.flink.runtime.taskexecutor.TaskManagerRunner TaskManagerRunner::main TaskManagerRunner::runTaskManagerProcessSecurely TaskManagerRunner::runTaskManager //构造TaskManagerRunner并调用start()方法 …

【设计模式——学习笔记】23种设计模式——中介者模式Mediator(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入案例一普通实现中介者模式 案例二 介绍基础介绍登场角色尚硅谷 《图解设计模式》 案例实现案例一&#xff1a;智能家庭类图实现 案例二&#xff1a;登录页面逻辑实现说明类图实现 总结文章说明 案例引入 案例一 普通实现 在租房过程中&#xff0c;客户可能…

10个创意网站,解决你没有灵感的问题

对于设计师来说&#xff0c;有源源不断的设计灵感&#xff0c;掌握最新的设计流行趋势是非常重要的。要提高设计修养&#xff0c;必须学习和理解优秀的设计作品。在这篇文章中&#xff0c;我们对灵感创意网站进行了分类整理&#xff0c;从中选取了10个素材优良、质量优良的灵感…

为什么过去十年AI创业失败了?

始于2010年前后的这次人工智能创业实际上是集体失败了。作为从业者我们固然可以讲它需要更长的启动周期&#xff0c;我们尽快的开始第二程就可以了&#xff0c;但就像抗日战争的时候如果没有论持久战的穿插到日寇力量薄弱区建立根据地等一系列基于过往教训的新战略&#xff0c;…

浅谈油烟净化技术分类及其优缺点

安科瑞 华楠 摘 要&#xff1a;随着我国经济水平的提高&#xff0c;餐饮业的快速发展&#xff0c;饮食油烟成为继工业排放和汽车尾气之后的第三大空气污染源&#xff0c;随着GB18483-2001的推出&#xff0c;各类油烟处理环保设备不断出现。文章从净化原理、净化效率、使用成本…