在K&R的开头碰到了getchar函数的用法有些迷糊,在查找了一些资料以及动手实践后有了大致的了解。


  1. getchar函数,是从缓冲区读取数据的,而不是直接从键盘输入中读取数据的
  2. 键盘的输入会保存在缓冲区中,同时会显示在屏幕上
  3. getchar函数执行时,每次从缓冲区中读取一个字符
  4. 键盘输入enter或者ctrl+D后,getchar会检查缓冲区中是否有数据,如果有的话,会开始读取缓冲区中的数据

假设现在依次从键盘输入 1,2,3,4,会依次将1,2,3,4输入缓冲区中,也可以用backspace从最后输入的字符删除缓冲区中的数据,直到输入enter或者ctrl+D时,getchar开始依次读取缓冲区内的数据。
需要注意的是,例如输入enter时会先将\n存入再刷新缓冲区,例如输入1,2,3,4,再输入enter后,缓冲区中的数据依次是[1,2,3,4,\n]。getchar会按存入缓冲区的顺序读取数据,并且缓冲区在main函数执行结束后销毁。


getchar函数从缓冲区读取数据的意义:节省资源和时间,提高资源利用效率,而且可以修改缓冲区内的数据。

转载于:https://www.cnblogs.com/yuyin/articles/9636003.html

浅析getchar用法相关推荐

  1. getchar()用法 与 getch()函数使用方法

    getchar()用法 1.从缓冲区读走一个字符,相当于清除缓冲区2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getc ...

  2. 浅析Promise用法

    浅析Promise用法 要理解Promise要知道没有Promise的回调地狱 如何插入一段漂亮的代码片 Promise语法与then的用法 所谓Promise,简单说就是一个容器,里面保存着某个未来 ...

  3. c语言getchar用法_C语言 — 关键字

    几十个关键字不多,用得多了自然会记住,相信大家也不会担心.下面是C语言中的 32 个关键字: 一丶C语言关键字 第一个关键字:auto 用来声明自动变量.可以显式的声明变量为自动变量.只要不是声明在所 ...

  4. C语言中putchar()和getchar()用法

    C语言中除了可以用printf() scanf()输出输入字符以外,还可以用putchar() getchar()输出输入字符. putchar()是put character的缩写.作用是输出一个字 ...

  5. C语言之getchar()用法

    (1)语法 int getchar(void); (2)返回值 getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不 ...

  6. Hdu 2027 getchar用法

     统计元音 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  7. C语言 getchar用法

    C语言之 getchar 语法: int x = getchar() 返回值: getchar函数返回用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕. int x = ...

  8. POJ 1185 炮兵阵地(状态压缩DP)

    Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用&quo ...

  9. c 语言学习:基本操作,数组,字符串,指针

    文章目录 基本操作 判断闰年平年 倒序输出五位数 赋值运算 用条件表达式求三个数的最大值 测试int,float,char类型在本机所占的字节数 单个字符的输入getchar() 使用*抑制符跳过输入 ...

最新文章

  1. JVM必备指南(转)
  2. 栈C/C++实现(数据结构严蔚敏版)
  3. 注意我写的OTA短信同步设置的代码有很多问题
  4. 错误记录(11): source is null for getProperty(null, name)
  5. oracle 查找上一个,查看ORACLE_HOME的另外一个方法
  6. 循环体中调用[NSString stringWithFormat:@%@,Object] 方法的内存问题
  7. datasource dbcp 数据源_数据源--.dbcp.BasicDataSource 使用
  8. 软件项目uat测试报告,项目管理-验证阶段-UAT测试报告.doc
  9. 跟着Nature Communications学作图--渐变火山图
  10. linux boot efi 大小,/boot/efi。
  11. Hibernate报错org.hibernate.MappingException: Unknown entity解决方法
  12. python中[-1]、[:-1]、[::-1]、[-1:-7:-1]的使用方法
  13. Day621.Spring Test 常见错误 -Spring编程常见错误
  14. 饿了么“短平快”创新项目的架构取舍之道
  15. 去香港读研——申请全过程
  16. opencv打开mp4文件_OpenCV 实现播放本地mp4视频或远程服务mp4视频
  17. [saiku]saiku3.8项目搭建步骤
  18. 如何写产品介绍PPT
  19. jdk11新特性——ZGC
  20. NyistOJ 2 括号匹配(栈)

热门文章

  1. Java sleep 替换_Thread.Sleep在Java中的替代品
  2. 你相信么?新疆居然是片海
  3. div - svg -canvas - 下载 (优化版)
  4. mob sdk vue 短信验证_vueCli集成环信SDK
  5. 解决RabbitMQ admin账号登陆失败的问题
  6. GNN-CS224W: 17 Scaling Up GNNs
  7. IC卡的传输协议(3)【转】
  8. 织梦采集无需授权自动织梦采集插件
  9. 这将会是我的第一篇博客
  10. 两个卡方分布之和_机器学习算法数学基础之 —— 统计与概率论篇(3)