zoukankan      html  css  js  c++  java
  • C++ getchar()的使用方法

    1 getchar()简介

    getchar()是C语言中的函数,C++中也包含了该函数。getchar()函数的作用是从标准的输入stdin中读取字符。

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

    2 getchar()读取缓冲区方式

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

    当输入结束后,键盘输入的数据连同回车键一起被输入到输入缓冲区中。

    在程序中第一次调用getchar()函数从输入缓冲区中读取一个字节的数据。

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

    例如如下代码

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

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

    图1 test1和test2的值

    3 解决方法

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

    void rewind( FILE* stream );

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

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

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

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

    1 char test1 = getchar();
    2 rewind(stdin);
    3 char test2 = getchar();
    4 rewind(stdin);

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

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

    区中读取字符“b”,最后再次调用rewind()函数清理输入缓冲区中的数据。

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

     

    图2 test1和test2的值

  • 相关阅读:
    886. 求组合数 II(模板)
    885.求组合数 I(模板)
    线性同余方程(同余+扩展欧几里得模板)
    扩展欧几里得(模板)
    乘法逆元(模板)
    求欧拉函数(模板)
    最大公约数(欧几里得算法/辗转相除法)
    求约数之和
    New beginning~
    CSP-S 2019游记
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/12522688.html
Copyright © 2011-2022 走看看