当前位置:网站首页 > 技术博客 > 正文

c语言的getchar



getchar()函数实际上是int getchar(void),所以它返回的是ASCII码,所以只要是ASCII码表里有的字符它都能读取出来。在调用getchar()函数时,编译器会依次读取用户键入缓存区的一个字符(注意这里只读取一个字符,如果缓存区有多个字符,那么将会读取上一次被读取字符的下一个字符),如果缓存区没有用户键入的字符,那么编译器会等待用户键入并回车后再执行下一步 (注意键入后的回车键也算一个字符,输出时直接换行)

来几个例子:

 
  

运行实例:
在这里插入图片描述

第一个字符1被char ch读取,所以getchar()依次读取下一个未读取字符2


 
   

运行实例:
在这里插入图片描述
char ch读取第一个字符1,注意:我们说过,用户键入的回车也算一个字符,所以这里getchar()把回车读取了,输出时体现为换行


 
    

运行实例:
在这里插入图片描述


因为回车也算一个字符,所以如果在前面先要调用scanf()这种读取字符的函数后再键入新值调用getchar()(因为想要scanf()调用必须回车才能执行,就多了一个回车在缓存区中),建议清空缓存区再使用getchar(),不然getchar()会把前面回车也读取出来。注:可以使用fflush(stdin)清空缓存区(有的编译器用不了),推荐C语言基本语法:

 
     

例子:

 
     

运行实例:
在这里插入图片描述
如果没有清空缓存区呢?(结果可能有点不好理解,多分析一下)

 
     

运行实例:
在这里插入图片描述


getchar()在初次接触和使用时,大多数出错就是对于回车字符的读取。在调用时注意就会避免很多麻烦。调用前清空缓存区会是很好的解决办法。所以scanf()的优点就体现出来了,scanf()只有在格式化为"%c"时会读取回车符,但缺点也是无法读取含空格等字符的字符串并存储到字符数组中(严格意义上讲并不是字符串,可以理解为含格式化"%s"无法完整读取的字符组合,例如"gy gr 134 4353freg 32"这种中间有空格的)

  • 上一篇: 单臂路由vlan设置
  • 下一篇: sql 游标的作用
  • 版权声明


    相关文章:

  • 单臂路由vlan设置2025-06-13 20:30:05
  • opencv存储图像2025-06-13 20:30:05
  • seekbay2025-06-13 20:30:05
  • gtest test_f2025-06-13 20:30:05
  • 线程间通信机制2025-06-13 20:30:05
  • sql 游标的作用2025-06-13 20:30:05
  • 迈迪工具集下载安装教程2025-06-13 20:30:05
  • sql触发器怎么触发2025-06-13 20:30:05
  • linux内存压力测试命令2025-06-13 20:30:05
  • 二路归并排序算法2025-06-13 20:30:05