getchar和putchar函数详解
字符在C语言出现时用' '标志起来,并且字符在C语言中以ASCIL码形式存储
'a'——97二者意思相同
getchar函数:int getchar(void);
该函数读取标准输入(键盘输入),返回读取到字符的ASCIL值
如果读取过程发生错误,则返回EOF(-1)文件结束标志
getchar函数读取时,按ctrl+z可以让getchar读取到EOF结束读取
int ch =getchar();
对于getchar来说,回车也算输入字符
putchar函数:void putchar(int);
将参数的ASCIL值对应的字符打印在屏幕上
putchar(ch);可以替代printf("%s",ch);
getchar工作原理
用此现象解释getchar工作原理
首先getchar要读取键盘输入的信息,并不是直接读取,在getchar和键盘之间还有一个缓冲区
1.程序运行后getchar处于等待状态,等待键盘输入
2.键盘输入A+回车
3.缓冲区中放入A\n
4.getchar读取缓冲区的第一个字符,调用putchar输出字符A
5.再次调用getchar,此时因为缓冲区还有一个\n字符,所以getchar不会进行等待键盘输入
直接读取缓冲区的\n字符,调用putchar输出\n,效果就是换行
就是此图的现象
同理就不难理解下面这个程序的现象了
先输入ABC+回车
在输入Ctrl+回车
进阶训练
char password [20];
scanf("%s”,password);
使用此函数时,scanf也会在缓冲区等待键盘的输入,当最后输入回车时,
回车会触发scanf将前面输入的字符串取走(不会取走回车的\n),
缓冲区只剩下了\n
再调用getchar函数时由于缓冲区里面有字符,不再等待,直接取走\n
文章就到这里了,感谢支持哦
getchar和putchar函数详解相关推荐
- 【C语言】scanf,getchar,getch函数详解
编译环境:sublime text 3 + cmd运行窗口 一.函数简介 1.输入函数scanf() scanf()函数是printf()函数的逆操作,它可以把输入的字符串转换成整数.浮点数.字符和C ...
- c语言中用来指示文件缓冲区中具体读写位置,C语言文件读写操作中缓冲区问题和setbuf函数详解...
清除和设置文件缓冲区 (1).清除文件缓冲区函数: int fflush(FILE *stream); int flushall(); fflush()函数将清除由stream指向的文件缓冲区里的内容 ...
- scanf函数详解与缓冲区
1.基本信息 函数原型: int scanf( char *format, args, ...); 函数返回值: 读入并赋给args的数据个数,遇到文件结束返回EOF,出错返回0. 函数功能: sca ...
- c--scanf()函数详解
一:scanf()函数的影响 scanf()函数是所有C语言学习者在学习C语言过程中所遇到的第二个函数(第一个函数是printf(),Brian W.Kerninghan & Dennis M ...
- Linux 文件锁 fcntl 函数详解
Linux 文件锁 fcntl 函数详解 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); ...
- C语言网络编程:accept函数详解
文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...
- 【FFmpeg】函数详解(三)
FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...
- 【FFmpeg】函数详解(二)
FFmpeg函数详解 9.av_dump_format 10.avio_open 11.avformat_write_header 12.avcodec_send_frame 13.avcodec_r ...
- 【FFmpeg】函数详解(一)
FFmpeg函数详解 一.错误码相关 1.AVERROR 2.av_strerror 3.其他错误码解释 二.编解码 1.获取编解码器 2.申请.释放上下文环境 3.打开编码器avcodec_open ...
最新文章
- W3C 战败:无权再制定 HTML 和 DOM 标准!
- python语言入门电子版-python从入门到精通pdf
- 一看就懂的感知机算法PLA
- AJAX使用说明书 基础
- js操作多选框checkBox
- C++小游戏——海战棋
- 实用的CSS3属性和使用技巧
- 卸载pip包并卸载其依赖包
- 王艺瑞浙江大学计算机学院,关于公示2010年(秋)同等学力申请进入论文阶段学员名单的通知...
- Day03_【数组、ArrayList】
- 机器人杆长标定_机器人标定系统
- 通过位与方法获取三色值,十六进制色值转换RGB
- IP 库的那些事儿之 2013 - 2014 流水帐版
- 《黑客与画家》摘要读后感
- P1119 灾后重建(基础Floyd原理的理解和运用)
- 计算机网络原理【第四章 网络层】课后习题答案
- Qt 开发ARM64程序
- 软件构造期末复习知识点整理
- TensorFlow学习笔记——深层神经网络
- 小步快跑是这样玩的(上)
热门文章
- word2vec包中cbow模型--学习笔记
- 什么是网站站群?网站站群有哪些类型?
- 2021年江西省安全员B证考试资料及江西省安全员B证考试总结
- 数字IC笔记-scan chain 压缩和解压缩
- JAVA面向接口的编程思想与具体实现
- c语言 循环语句中的终止命令,Shell break和continue命令
- linux中top命令cpu,ps命令中的%CPU字段和top命令中的%CPU字段
- nest使用cloudbase(tcb)进行serverless开发
- python计算当天零点时间
- java实现客户端脚本录制_(二)appium-desktop录制脚本二次开发,生成我司自动化脚本...