字符在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函数详解相关推荐

  1. 【C语言】scanf,getchar,getch函数详解

    编译环境:sublime text 3 + cmd运行窗口 一.函数简介 1.输入函数scanf() scanf()函数是printf()函数的逆操作,它可以把输入的字符串转换成整数.浮点数.字符和C ...

  2. c语言中用来指示文件缓冲区中具体读写位置,C语言文件读写操作中缓冲区问题和setbuf函数详解...

    清除和设置文件缓冲区 (1).清除文件缓冲区函数: int fflush(FILE *stream); int flushall(); fflush()函数将清除由stream指向的文件缓冲区里的内容 ...

  3. scanf函数详解与缓冲区

    1.基本信息 函数原型: int scanf( char *format, args, ...); 函数返回值: 读入并赋给args的数据个数,遇到文件结束返回EOF,出错返回0. 函数功能: sca ...

  4. c--scanf()函数详解

    一:scanf()函数的影响 scanf()函数是所有C语言学习者在学习C语言过程中所遇到的第二个函数(第一个函数是printf(),Brian W.Kerninghan & Dennis M ...

  5. Linux 文件锁 fcntl 函数详解

    Linux 文件锁 fcntl 函数详解 #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); ...

  6. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

  7. 【FFmpeg】函数详解(三)

    FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...

  8. 【FFmpeg】函数详解(二)

    FFmpeg函数详解 9.av_dump_format 10.avio_open 11.avformat_write_header 12.avcodec_send_frame 13.avcodec_r ...

  9. 【FFmpeg】函数详解(一)

    FFmpeg函数详解 一.错误码相关 1.AVERROR 2.av_strerror 3.其他错误码解释 二.编解码 1.获取编解码器 2.申请.释放上下文环境 3.打开编码器avcodec_open ...

最新文章

  1. W3C 战败:无权再制定 HTML 和 DOM 标准!
  2. python语言入门电子版-python从入门到精通pdf
  3. 一看就懂的感知机算法PLA
  4. AJAX使用说明书 基础
  5. js操作多选框checkBox
  6. C++小游戏——海战棋
  7. 实用的CSS3属性和使用技巧
  8. 卸载pip包并卸载其依赖包
  9. 王艺瑞浙江大学计算机学院,关于公示2010年(秋)同等学力申请进入论文阶段学员名单的通知...
  10. Day03_【数组、ArrayList】
  11. 机器人杆长标定_机器人标定系统
  12. 通过位与方法获取三色值,十六进制色值转换RGB
  13. IP 库的那些事儿之 2013 - 2014 流水帐版
  14. 《黑客与画家》摘要读后感
  15. P1119 灾后重建(基础Floyd原理的理解和运用)
  16. 计算机网络原理【第四章 网络层】课后习题答案
  17. Qt 开发ARM64程序
  18. 软件构造期末复习知识点整理
  19. TensorFlow学习笔记——深层神经网络
  20. 小步快跑是这样玩的(上)

热门文章

  1. word2vec包中cbow模型--学习笔记
  2. 什么是网站站群?网站站群有哪些类型?
  3. 2021年江西省安全员B证考试资料及江西省安全员B证考试总结
  4. 数字IC笔记-scan chain 压缩和解压缩
  5. JAVA面向接口的编程思想与具体实现
  6. c语言 循环语句中的终止命令,Shell break和continue命令
  7. linux中top命令cpu,ps命令中的%CPU字段和top命令中的%CPU字段
  8. nest使用cloudbase(tcb)进行serverless开发
  9. python计算当天零点时间
  10. java实现客户端脚本录制_(二)appium-desktop录制脚本二次开发,生成我司自动化脚本...