scanf(),getchar()输入缓冲区的回车字符问题

Mon Oct 05 16:33:08 CST 2015 962 C/C++

文章摘要getchar(),scanf()函数在输入字符后如何清除缓冲区?如何清除掉程序并不需要的回车字符?

先看一段使用了getchar()函数的C代码

#include <stdio>
int main(int argc, char** agrv){
        char c;
        while((c=getchar() != 'q')
                putchar(c);    
}

上面这段代码运行结果是:每次输入一个字符显示一个字符,直至输入的字符为'q'.

可是程序运行结果却输出了我们并不期待的回车,这是因为我们在输入字符的时候,需要按下回车来结束输入,回车符会跟随着我们输入的字符一起进入了stdin里,被getchar读取了。

那么如果当我们并不需要回车符的时候,我们可以在读取需要的字符之后再清空输入流:

fflush(stdin);

可是并不是所有的编译环境都支持这个方法,那么可以采用下面这种方法:

while((c=getchar()) == '\n')

打赏
打赏

分享到: