因为最近被getchar弄的很烦所以今天中午好好梳理一下

getchar()

从缓冲区读走一个字符,相当于清除缓冲区

前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个
getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误

下面用一个最简单的例子来解释

这里可以看到当连续输入两个字符时,如果加上回车换行,第二个人字符读入的就是\n回车符

加入getchar()把回车符给吸收时就可以正常读入输出

gets()

gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符

不属于这个字符串。

gets()函数存在一个严重的缺陷,这个缺陷就是:它不会检查数组是否能够装得下输入行。

对于get(s)来说,只有回车键才是结束的标识,空格不是输入结果标识,所以用gets这个函数就可以实现输入带空格的字符串

scanf()读入遇到空格就会结束

下面举一个小例子

可以看到第二次的读入后面的world并没有读入进去

getchar()和gets()相关推荐

  1. C语言中(字符串)输入scanf()、gets()、fgets()以及getchar()、getc()函数的联系与区别

    scanf()函数的输入基于获取"单词",如果使用%s格式,字符串以第一个非空白字符开始读入,读到(但不包括)下一个空白字符(可以是空格.制表符或者换行符).使用scanf()把一 ...

  2. 区分C语言中getch、getche、fgetc、getc、getchar、fgets、gets

    首先,这两个函数不是C标准库中的函数,    int getch(void) //从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符.也就是,不带回显.  int getche(v ...

  3. C语言中文件的读写(fputc和fgetc)(putchar和getchar)

    文件打开之后就可以对文件进行读写了. 1.fputc(ch,fp); 将字符ch输出到(即写到)fp所指向的文件中.如果输出成功,返回字符ch的值,否则返回EOF(-1) putchar(c) 是从f ...

  4. getchar返回int类型

    #include <stdio.h> /* copy input to output; 2nd version */ main() { int c; c = getchar(); whil ...

  5. Balkan2007]Toponyms[链式前向星建字典树+getchar()读入优化]

    思路容易想,卡空间和时间就吐了 用链式前向星压缩空间,用getchar()一位一位读加快读入 #include <iostream> #include <cstdio> #in ...

  6. c程序设计语言中printf,编程序 用getchar函数读入两个字符c1和c2,然后分别用putchar和printf函数输出这两个字符。请问...

    编程序,用getchar函数读入两个字符给c1和c2,然后分别用putchar和printf函数输出这两个字符.请问: 1. 变量C1,C2应定义为字符型或整型?或二者皆可? 答:在这个题目里,变量C ...

  7. c语言用getchar函数输入两个字符c1,c语言:用getchar函数读入两个字符给c1,c2,用putchar和printf输出。思考问题...

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

  8. 利用getchar()消除多余字符数据(主要是“回车”)

    我是这样写的: #include <stdio.h> int main() {     char a,b,c;     char t;     while(scanf("%c%c ...

  9. getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析...

    2013-07-18 21:35:58 getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析. char是字符型数 ...

  10. putchar(c1)在C语言中表示,C语言中的getchar和putchar详解

    一.首先给出<The_C_Programming_Language>这本书中的例子: #include int main( ) { int c; c = getchar(); while ...

最新文章

  1. 协整检验r语言代码_R语言学习笔记(一):时间序列分析
  2. BYTE,WORD,DWORD的大小及一些特殊的高低位宏(取高位 取低位)
  3. jquery点击页面其他位置隐藏div
  4. 解决Spring Boot报错Mapped Statements collection already contains value for...Error while adding the mapp
  5. mate30后续用鸿蒙系统,mate30可以升级鸿蒙不?升级后还能退回原系统吗?
  6. 【UFBA Practice Session for Brazilian ICPC Regionals - 2018】Carnival【强连通图求“关键边”】
  7. 如何用c语言编写炫酷烟花程序,简单屏幕烟花程序
  8. 64qam星座图matlab,16QAM_星形和矩形星座图调制解调MATLAB代码(最新整理)
  9. 算法:用Java实现一个mini布隆过滤器(BloomFilter)
  10. 一篇文章了解爬虫技术现状
  11. 学习编程与学习编程语言不同
  12. floor()报错注入
  13. MinGW和MSYS简介
  14. 爬虫有道翻译接口+图片文字识别
  15. MTK 智能手机平台原生应用介绍
  16. 用git连接gitee
  17. 【DRP项目】安装Oracle数据库之服务端安装+客户端安装(一)
  18. 【Java】创建文件夹
  19. Java学习--网络,图形界面和数据库
  20. Android 代码命名规范 -- 提高代码可以读性

热门文章

  1. NLP入门概览(3)—— 神经网络语言模型、词向量
  2. static, const, static const 与 const static
  3. AXL经典作品推荐恋する乙女と守护の楯 恋爱少女与守护之盾
  4. fseek函数的用法(用于设定指针位置)
  5. BDB的Btree结构以及影响Btree性能的各种配置和方法
  6. SQL文件的导入与导出
  7. 深入理解计算机系统 (第 1 节)
  8. containerd环境下build镜像
  9. Shell脚本编程实战
  10. STM32F030 IIC2通用读写24C02、24C16、24C32、24C64等例程