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++使用数组来实现哈夫曼树

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近
    2022-05-05
  • 详解C++11中绑定器bind的原理与使用

    详解C++11中绑定器bind的原理与使用

    C++11中引入的function机制,其中绑定器主要有三种:bind1st、bind2nd、bind(C++11)。本文就来和大家聊聊这些绑定器的底层实现原理与使用场景,需要的可以参考一下
    2022-12-12
  • Qt实现发送HTTP请求的示例详解

    Qt实现发送HTTP请求的示例详解

    这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • C++构造函数的初始化列表详解

    C++构造函数的初始化列表详解

    这篇文章主要为大家介绍了C++构造函数的初始化列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 用c语言根据可变参数合成字符串的实现代码

    用c语言根据可变参数合成字符串的实现代码

    本篇文章是对用c语言根据可变参数合成字符串的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++虚析构函数的使用分析

    C++虚析构函数的使用分析

    本篇文章是对C++虚析构函数的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C/C++中不同数据类型之间的转换详解

    C/C++中不同数据类型之间的转换详解

    这篇文章主要介绍了C/C++中不同数据类型之间的转换详解,数据类型转换是计算机编程中常见的操作,用于将一个数据类型转换为另一个数据类型,本文将对不同数据类型之间的转换作出说明,需要的朋友可以参考下
    2023-10-10
  • C++17结构化绑定的实现

    C++17结构化绑定的实现

    这篇文章主要介绍了C++17结构化绑定的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • C语言 队列的实现全解析

    C语言 队列的实现全解析

    队列(Queue)与栈一样,是一种线性存储结构,它具有如下特点:队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构。在队尾添加元素,在队头删除元素
    2022-04-04
  • opencv利用霍夫变换检测直线进行图片校正

    opencv利用霍夫变换检测直线进行图片校正

    这篇文章主要为大家详细介绍了opencv利用霍夫变换检测直线对图片进行校正,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12

最新评论