前言:

getchar()和putchar()函数都是单字符函数I/O,每次只能处理一个字符。getchar()是输入,putchar()是输出

在了解函数之前先说一下缓冲区,什么是缓冲区?用户输入的字符被收集并存储在一个临时存储区中,该存储区就叫"缓冲区"。

为什么要有缓冲区?C Primer Plus书籍上是这样介绍的:首先,把若干字符作为一个块进行传输比逐个发送这些字符节约时间。其次如果用户打错字符,可以直接通过键盘修正错误。当最后按下Enter键时,传输的是正确的输入。

了解缓冲区基本性质,再来说说getchar()函数,getchar()函数是在控制台上输入一个字符,按下回车键的时候就会退出。如果按回车之前输入了不止一个字符,其它字符会保留在"缓冲区"中,等待后续getchar调用读取(输出)。而putchar()函数的作用如开头所说在控制台上输出一个字符,仅此而已。

另外在调用getchar()函数在读取(输出)文件,检测到文件末尾会返回一个特殊的值:即EOF。通常EOF定义在stdio.h文件中:#define EOF (-1)。在这里十万个为什么又来了,为什么是-1?在了解EOF之前又回到了getchar()函数,getchar()是有一个int型的返回值,通常该函数返回值类型介于0~127之间,这些值对应标准的字符集。但如果系统能识别扩展字符集,该函数的返回值可能又是一个变数0~255,综上所述,无论哪一种都不能与-1一一对应,所以-1只能用于标记文件结尾。

以下是关于EOF使用方式说明,代码如下:

#include <stdio.h>
int main(void){int ch;while ((ch = getchar()) != EOF){putchar(ch);}return 0;
}

打印结果:

分析:该段代码的意思很简单,输入的字符如果是EOF就退出。在PC端如果按住键盘ctrl + z程序就会退出便不再继续输入输出,这也从另外一个角度上说明EOF其实就是ctrl + z按键组合。其实在该段代码中EOF可以完全省略掉,因为在stdio.h文件中已经定义了EOF,可以将代码改成"while (ch = getchar())",其内容结果都是一样的。再有就是getchar()虽然在控制台上输入的是字符,但是其返回值却是int类型,俩者不要混淆了。

说完EOF再来说说getchar()和putchar()函数使用方式,文件名cypher1.c(更改输入,空格不变),代码如下:

//更改输入空格不变
#include <stdio.h>
#define SPACE ' '//SPACE表示空格
int main(void){char ch;ch = getchar();//输入一个字符//输入的字符如果是回车键字符'\n',则跳出while循环while (ch != '\n'){//输入的字符如果是空格就将其输出,如果不是则其它字符按照ANSI码值+1if(ch == SPACE){putchar(ch);}else{ putchar(ch + 1);}ch = getchar();//保存字符}putchar(ch);//putchar函数(字符输出函数)的作用是向控制台上输出字符return 0;
}

打印结果:

分析:在该段代码中putchar(ch)就像是printf()一样,都是在控制台上显示出输入的内容,只不过putchar(ch)只能是字符。每循环一次通过ch = getchar()将其字符保存下来,然后继续下一次循环,直到输入回车键字符'\n'就会跳出循环。

以上就是getchar()和putchar()函数使用方式以及说明!

C语言getchar()和putchar()函数相关推荐

  1. C语言字符变量输出值,C语言,交换任意两个字符型变量的值并输出结果。要求:利用getchar和putchar函数。...

    C语言,交换任意两个字符型变量的值并输出结果.要求:利用getchar和putchar函数.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶 ...

  2. c语言scanf可以和putchar,C语言getchar和putchar和scanf函数_缓冲区

    C语言getchar和putchar和scanf函数_缓冲区 1.getchar int getchar ( void ); Get character from stdin Returns the ...

  3. C语言中getchar()和putchar()函数

     目录: 1.getchar()和putchar()函数的定义. 2.getchar()函数为什么用int定义返回值类型. 3.函数getchar()和函数scanf()的工作原理. 一.getcha ...

  4. getchar和putchar函数详解

    字符在C语言出现时用'  '标志起来,并且字符在C语言中以ASCIL码形式存储 'a'--97二者意思相同 getchar函数:int  getchar(void): 该函数读取标准输入(键盘输入), ...

  5. c语言getchar与putchar

    char C; scanf("%c"); putchar(getchar()); 为什么要加 printf("%d",getchar(); 才和#include ...

  6. 【初识C语言】putchar函数

    目录 前言 putchar函数简单介绍 putchar函数的简单使用 前言 在C语言中,putchar函数与getchar函数类似,它们两个常常搭配使用.getchar函数从控制台获取我们的输入字符, ...

  7. C语言中get_put函数详解,C语言第五课之getchar函数和putchar函数

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 getchar函数也就是键盘输入函数,这个函数和scanf函数不一样!getchar函数没有scanf函数灵活.下面就给大家介绍下getchar函数的介绍 ...

  8. C语言中的 gets,puts,getchar,putchar函数解析

    写在前面: 刚开始学习C语言的同学,都会遇到这么几个输入输出函数,并且会很容易误用,错用,导致最终的出错.因此我们需要整体的学习一下这几个函数,下面就让我们一起来学习吧... 一.getchar函数 ...

  9. C语言学习之编程序,用getchar函数读入两个字符给cl和c2,然后分别用putchar函数和printf函数输出这两个字符

    编程序,用getchar函数读入两个字符给cl和c2,然后分别用putchar函数和printf函数输出这两个字符.思考以下问题: (1)变量cl和c2应定义为字符型,整型还是二者皆可? (2)要求输 ...

最新文章

  1. Python取top N相关的模块:heapq模块
  2. Slog92_使用React框架进行前端开发4
  3. 2 周流量激增百倍的腾讯课堂后台扩容和性能优化实战
  4. HashMap Hashtable区别
  5. javascript 原生得到document.Element的方法
  6. C++STL容器排序查找效率测试
  7. 前端学习(1293):系统模块path路径操作
  8. h5页面如何预览excel文件_移动端页面,如何解析预览 word/excel/PDF文件?
  9. CentOS6.4之Linux软件包管理
  10. 基于张正友标定法的工业机器人视觉标定
  11. u盘推荐知乎_u盘知乎恢复
  12. 关于New Date()获取的不是当前电脑时间问题
  13. 【Kind2(基于SMT的自动模型检查器)学习笔记】基本语法
  14. 计算机专业的优秀学长寄语大一新生,学长学姐对大一新生的寄语 大学学长学姐寄语励志...
  15. Flink(Pometheus监控)
  16. 【综述】NL2SQL (二) WikiSQL
  17. jzoj 5970.【北大2019冬令营模拟12.1】space 莫比乌斯反演
  18. 利用USRP探索软件无线电(3)
  19. Python创建txt文件并读取与写入
  20. java.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect异常解决

热门文章

  1. DxO Analyzer的基本操作
  2. Babel的使用方法
  3. 怎么调大计算机浏览器内字体,W7系统浏览器字体大小设置的方法
  4. html 在线测试 鱼缸,五大浏览器功耗(电量消耗)测试:IE9领先
  5. 外国官方网站下载文件速度缓慢
  6. vue3+heightchart实现3D饼图,echarts3D饼图,3D饼图引导线实现
  7. 云服务器系统一键安装,云服务器一键安装系统
  8. 贝叶斯公式推导及意义
  9. 数据处理 | MATLAB实现KNN(K近邻)缺失数据填补
  10. Verilog always和assign知识点