C getchar putchar函数
目录
1.getchar()函数
2.putchar()函数
3.清空缓冲区
3.1 什么是缓冲区
3.2 场景
3.3 问题分析
3.4 改进(即清空缓冲区)
1.getchar()函数
1.int getchar(void) 函数从屏幕读取下一个可用的字符,并把它返回为一个整数(返回字符的ASCII码值)。这个函数在同一个时间内只会读取一个单一的字符。您可以在循环内使用这个方法,以便从屏幕上读取多个字符。
2.读取失败or遇到文件末尾是返回EOF。
ch = getchar() 和 scanf("%c", &ch); 语句效果相同
2.putchar()函数
1.int putchar(int c) 函数把字符(或者你想返回字符对应的ASCII码值)输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。您可以在循环内使用这个方法,以便在屏幕上输出多个字符。
putchar(ch) 和 printf("%c", ch); 语句效果相同
3.清空缓冲区
3.1 缓冲区
1.什么是缓冲区?
用户输入的字符被收集并储存在一个被称为缓冲区的临时存储区,按下Enter键后,程序才可以使用用户输入的字符。
2.为什么要有缓冲区?
首先,把若干字符作为一个块进行传输比逐个发送这些字符节约时间;
其次,如果用户打错字符,可以直接通过键盘修正错误,当最后按下Enter键时,传输的是正确的输入。
3.2 场景
#include<stdio.h>int main()
{char password[20];printf("请输入密码->");scanf("%s", password); //数组名不需要使用取地址符&printf("请确认Y/N:");int ch = getchar();if ('Y' == ch) {printf("确认成功\n");}else {printf("确认失败\n");}return 0;
}
输出结果:
3.3 问题分析
1.从输出结果我们可以看出:在我们输入密码之后,我们并未选择确认,程序就直接认定我们确认失败。
2.问题原因:scanf 与 getchar 都是从缓冲区中获取内容,但是关键来了:scanf函数在我们输入完毕后按下Enter键(或者是空格)后方才停止输入,此时scanf中的password拿走了密码123456,但是后面你敲的回车键转变成字符 ' \n ' 被ch = getchar()拿走,也就是说ch = ' \n '肯定不等于' Y ',所以直接输出确认失败。
3.4 改进(即清空缓冲区)
1.由3.3分析可知,密码确认的失败主要是因为getchar读取的 ' \n ' 导致,因此,我们需要清空缓冲区,即scanf读取后缓冲区剩余字符我们需要清空。
#include<stdio.h>int main()
{char password[20];printf("请输入密码->");scanf("%s", password); //数组名不需要使用取地址符&getchar(); //这里我又加了一个getchar(),这样\n就被去掉了printf("请确认Y/N:");int ch = getchar();if ('Y' == ch) {printf("确认成功\n");}else {printf("确认失败\n");}return 0;
}
2.缓冲区字符较多,如何清空?
①还是上面的代码,比如输入123456 abcd,在6后面我输入了一个空格,此时scanf只读取到6,则缓冲区还剩下abcd\n五个字符,但是getchar()一次只能去除一个,则我们需要通过循环的方式,逐步去除缓冲区中所有的剩余字符。
②代码演示:
#include<stdio.h>int main()
{char password[20];printf("请输入密码->");scanf("%s", password); //数组名不需要使用取地址符&int ch = 0;while (ch = getchar() != '\n') {;}printf("请确认Y/N:");ch = getchar();if ('Y' == ch) {printf("确认成功\n");}else {printf("确认失败\n");}return 0;
}
运行结果:
这样我们就达到了一个清空缓冲区的效果!
C getchar putchar函数相关推荐
- C语言中的 gets,puts,getchar,putchar函数解析
写在前面: 刚开始学习C语言的同学,都会遇到这么几个输入输出函数,并且会很容易误用,错用,导致最终的出错.因此我们需要整体的学习一下这几个函数,下面就让我们一起来学习吧... 一.getchar函数 ...
- C语言学习之编程序,用getchar函数读入两个字符给cl和c2,然后分别用putchar函数和printf函数输出这两个字符
编程序,用getchar函数读入两个字符给cl和c2,然后分别用putchar函数和printf函数输出这两个字符.思考以下问题: (1)变量cl和c2应定义为字符型,整型还是二者皆可? (2)要求输 ...
- C语言getchar()和putchar()函数
前言: getchar()和putchar()函数都是单字符函数I/O,每次只能处理一个字符.getchar()是输入,putchar()是输出. 在了解函数之前先说一下缓冲区,什么是缓冲区?用户输入 ...
- getchar和putchar函数详解
字符在C语言出现时用' '标志起来,并且字符在C语言中以ASCIL码形式存储 'a'--97二者意思相同 getchar函数:int getchar(void): 该函数读取标准输入(键盘输入), ...
- C语言中get_put函数详解,C语言第五课之getchar函数和putchar函数
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 getchar函数也就是键盘输入函数,这个函数和scanf函数不一样!getchar函数没有scanf函数灵活.下面就给大家介绍下getchar函数的介绍 ...
- C语言字符变量输出值,C语言,交换任意两个字符型变量的值并输出结果。要求:利用getchar和putchar函数。...
C语言,交换任意两个字符型变量的值并输出结果.要求:利用getchar和putchar函数.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶 ...
- C语言中getchar()和putchar()函数
目录: 1.getchar()和putchar()函数的定义. 2.getchar()函数为什么用int定义返回值类型. 3.函数getchar()和函数scanf()的工作原理. 一.getcha ...
- C/C++ putchar函数 - C语言零基础入门教程
目录 一.前言 二.putchar 函数简介 三.putchar 函数使用 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.前言 C ...
- 【初识C语言】putchar函数
目录 前言 putchar函数简单介绍 putchar函数的简单使用 前言 在C语言中,putchar函数与getchar函数类似,它们两个常常搭配使用.getchar函数从控制台获取我们的输入字符, ...
最新文章
- MongoDB 安装配置
- 留还是走?如何做不确定时代下的最难选择
- antd 表单域验证规则 - 只能输入数字字符,去除前导0
- oracle 119(11.2.0.4),ORACLE 从 11.2.0.1 升级到 11.2.0.4 版本之ORA-00119问题处理纪实
- 最短路径问题 图论
- 机器学习基础(二十五)—— Feature Selection
- 数据库—事务—并发控制技术
- 使用Apache poi生成excel并绘制折线统计图,扇形统计图
- JTextArea:文本域组件
- 卡塔尔世界杯出现了半自动越位识别技术、Feelix Palm、动作轨迹捕捉等黑科技,一起来看看吧。
- QT在windows上检测USB端口插拔
- LOL IXTAL CUP 第一日 冠军杯赛 407的夺冠之路
- Atitit r2017 r1 doc list on home ntpc.docx
- Python Java 滑块识别-通杀滑块
- IT从业者的学习规划——学习者系列文章开篇
- YumRepo Error: All mirror URLs are not using ftp, http[s] or file解决办法
- DevExpress中实现对DataTable的操作、转换
- depth peel_10个jQuery Page Peel插件
- Docker技术研究
- ITE平台开发 chapter5之jperf测试网络吞吐量