C++中关于getchar()的使用方法

 更新时间:2022年11月24日 10:29:46   投稿:jingxian  
这篇文章主要介绍了C++中关于getchar()的使用方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

getchar()简介

getchar()是C语言中的函数,C++中也包含了该函数。

getchar()函数的作用是从标准的输入stdin中读取字符。

也就是说,getchar()函数以字符为单位对输入的数据进行读取。

getchar()读取缓冲区方式

在控制台中通过键盘输入数据时,以回车键作为结束标志。

当输入结束后,键盘输入的数据连同回车键一起被输入到输入缓冲区中。在程序中第一次调用getchar()函数从输入缓冲区中读取一个字节的数据。

需要注意的是,如果此时在程序中第二次调用getchar()函数,因为此时输入缓冲区中还有回车键的数据没有被读出,第二个getchar()函数读出的是回车符。

例如如下代码

char test1 = getchar();char test2 = getchar();

此时在控制台中输入字符“a”并且按下回车键,test1的值是字符“a”,而test2的值是“\n”,如图1所示。

图1 test1和test2的值

解决方法

可以使用rewind()函数来清理输入缓冲区中的数据。

该函数的格式为

void rewind( FILE* stream );

其中,参数stream表示指向FILE结构的指针,即为指定的流。

该函数的作用是将文件指针移动到文件的起始位置处。

rewind()函数清理指定流中的错误指示符以及文件结束指示符。

将“2 getchar()读取缓冲区方式”中提到的代码修改为

char test1 = getchar(); rewind(stdin); char test2 = getchar(); rewind(stdin);

在控制台中,首先输入字符“a”然后按下回车键。

getchar()函数从输入缓冲区中读取字符“a”,之后调用rewind()函数清理输入缓冲区中的数据,stdin表示输入缓冲区的指针;之后再在控制台中输入字符“b”,然后按下回车键,getchar()函数从输入缓冲区中读取字符“b”,最后再次调用rewind()函数清理输入缓冲区中的数据。

此时,test1和test2的值如图2所示。

图2 test1和test2的值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C语言三子棋小游戏的实现

    C语言三子棋小游戏的实现

    这篇文章主要为大家详细介绍了C语言三子棋小游戏的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • C语言二进制思想以及数据的存储

    C语言二进制思想以及数据的存储

    本文主要介绍了C语言的二进制思想以及数据的存储,这里对二进制和数据存储做了详细的说明,对开始学习C语言的同学比较有参考价值
    2016-07-07
  • C++计算ICMP头的校验和实例

    C++计算ICMP头的校验和实例

    这篇文章主要介绍了C++计算ICMP头的校验和的方法,代码简单实用,对于校验ICMP报文来说有不错的实用价值,需要的朋友可以参考下
    2014-10-10
  • C语言指针超详细讲解上篇

    C语言指针超详细讲解上篇

    指针提供了对地址操作的一种方法,因此,使用指针可使得 C 语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作数组。在一定意义上可以说,指针是 C 语言的精髓
    2022-04-04
  • 探索Visual C++下创建WPF项目的方法示例

    探索Visual C++下创建WPF项目的方法示例

    这篇文章主要介绍了探索Visual C++下创建WPF项目的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • C++之构造函数默认值设置方式

    C++之构造函数默认值设置方式

    这篇文章主要介绍了C++之构造函数默认值设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • c++分离讲解模板的概念与使用

    c++分离讲解模板的概念与使用

    人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是 C++ 引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动
    2022-04-04
  • C语言中字符串实现正序与逆序实例详解

    C语言中字符串实现正序与逆序实例详解

    这篇文章主要介绍了C语言中字符串实现倒叙实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • c++ 排查内存泄漏的妙招

    c++ 排查内存泄漏的妙招

    这篇文章主要介绍了c++ 如何用辅助类排查内存泄漏,帮助大家更好的理解和学习使用c++,感兴趣的朋友可以了解下
    2021-03-03
  • c++ 构造函数的初始化列表

    c++ 构造函数的初始化列表

    构造函数的初始化列表仅仅指定用于初始化成员的值,并不指定这些初始化执行的次序。成员初始化的次序就是定义成员的次序,第一个成员首先被初始化,然后是第二个,依次类推
    2013-07-07

最新评论