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

这篇具有很好参考价值的文章主要介绍了getchar()清空缓冲区剩余的空格回车等转义字符。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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);
}

getchar()清空缓冲区剩余的空格回车等转义字符,c语言
分析如下:
1 、输入语句scanf(“%c,%c”,&a,&b)中,“%c,%c”中间有“,”,所以键盘输入时候,两个字符间应该用“,”隔开;
2、第一个scanf输入为"3,h/n"(scanf以回车、空格、制表符Tab结束),键入的字符中有转义字符回车\n,该转义字符会存到缓冲区队首。第二个scanf读入时首先检查缓冲区,发现缓冲区里还有 \n ,而且正好匹配%c,于是直接读走 \n 。
getchar()清空缓冲区剩余的空格回车等转义字符,c语言
改进方法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);
}

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

改进方法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);
}

getchar()清空缓冲区剩余的空格回车等转义字符,c语言文章来源地址https://www.toymoban.com/news/detail-638993.html

到了这里,关于getchar()清空缓冲区剩余的空格回车等转义字符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 8.缓冲区管理

    双缓冲区:TC+M 假设初始状态缓冲区1满,缓冲区2空,工作区为空。 刚开始缓冲区2为空,所以设备可以向缓冲区2中冲入数据耗时T,另一方面刚开始缓冲区1中是满的,所以刚开始就可以把缓冲区1中的数据传送到工作区中,M时刻工作区被充满,CPU就开始处理数据耗时C,处理完

    2024年02月11日
    浏览(28)
  • 理解缓冲区

    对于这样的代码,首先可以肯定的是 printf 语句先于 sleep 执行,既然如此那么就应该是先打印语句然后进行休眠,下面看看结果: 但这里却是先休眠以后再打印语句,这是因为存在一个叫缓冲区的东西,当我们要向外设写入数据(让显示器显示就是向显示器写入数据)时会将

    2023年04月25日
    浏览(64)
  • 【Linux】文件缓冲区

    提到文件缓冲区这个概念我们好像并不陌生,但是我们对于这个概念好像又是模糊的存在脑海中,之间我们在介绍c语言文件操作已经简单的提过这个概念,今天我们不妨深入理解什么是文件缓冲区 通过自己实现库中的一些文件操作函数更加深入的理解文件缓冲区 自定义实现

    2024年02月10日
    浏览(46)
  • Redis 缓冲区

    缓冲区的应用场景 : 客户端与服务器端的通信时,暂存客户端发送的命令数据,或暂存服务器端返给客户端的数据结果 主从节点间进行数据同步时,暂存主节点接收的写命令和数据 缓冲区 : 避免客户端和服务器端的请求发送和处理速度不匹配 服务器给每个连接的客户端都准

    2024年02月07日
    浏览(59)
  • 【linux】重定向+缓冲区

    自我名言 : 只有努力,才能追逐梦想,只有努力,才不会欺骗自己。 喜欢的点赞,收藏,关注一下把! close(1),为什么没有打印新建文件fd呢? printf(“%dn”,fd); printf会把内容打印到stdout文件中。 但是close(1)关闭标准输出stdout—显示器,int fd=open();新打开的文件fd是1。 st

    2024年02月08日
    浏览(38)
  • 【Linux】深入理解缓冲区

    目录 什么是缓冲区 为什么要有缓冲区 缓冲区刷新策略 缓冲区在哪里  手动设计一个用户层缓冲区 缓冲区本质上一块内存区域,用来保存临时数据。 缓冲区在各种计算任务中都广泛应用,包括输入/输出操作、网络通信、图像处理、音频处理等。 这块内存区域是由 谁提供的

    2024年02月15日
    浏览(55)
  • SEED-缓冲区溢出攻击

    实验环境:SEED-Ubuntu20.04虚拟机 a) 缓冲区溢出原理 **缓冲区溢出攻击原理:**利用溢出的数据改变源程序的控制流,如覆盖返回地址 b) 分析生成badfile文件的exploit.py程序 Shellcode部分 字节数组末尾处填入shellcode c) 编译目标服务器上具有缓冲区溢出漏洞的stack.c程序,并将其缓冲

    2024年02月07日
    浏览(35)
  • C/C++缓冲区

    什么是缓冲区? 程序和磁盘文件之间不能直接交换数据,必须通过内存中一个被称为文件缓冲区的区域来中转。ANSIC标准规定,系统会自动为每个正在使用的文件在内存中开辟一个缓冲区,缓冲区的大小随机器而异。 缓冲区有什么作用? 假设我们在家中休息看电视吃零食,

    2024年02月15日
    浏览(38)
  • 网络安全——缓冲区溢出攻击

    1、缓冲区溢出概述 什么是缓冲区?它是指程序运行期间,在内存中分配的一个连续的区域,用于保存包括字符数组在内的各种数据类型。所谓溢出,其实就是所填充的数据超出了原有的缓冲区边界,并非法占据了另一段内存区域。 两者结合进来,所谓缓冲区溢出,就是由于

    2024年02月13日
    浏览(40)
  • 浅谈linux缓冲区的认识!

    今天来为大家分享一波关于缓冲区的知识!那么既然我们要谈缓冲区,那么就得从是什么?为什么?有什么作用这几个方面来谈论一下缓冲区!然后再通过一些代码来更加深刻的理解缓冲区的知识! 从最简单的理解方面来,我们可以将缓冲区理解成一块内存!那么这块内存是

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包