C语言中getchar()是带缓存输入函数,且执行一次getchar()函数,只能读到一个字符。但,用户却可以一次输入n多个字符,这些字符会先存储到输入缓存中,在用户输入回车后,getchar()才去缓存中读取数据。
如果此时(回车后),只是进行一次getchar()读入,则只能得到第一个输入字符,如果没有后续的读入操作,则滞留在缓存中的数据会在程序结束时被丢弃。
如果代码中,是循环进行getchar()读入,则会依次读到所有的字符,直到循环条件结束。如:
以下测试程序,供编程爱好者研究:
#include <windows.h>
#include <stdio.h>
void main(void)
{
char ch;
while( (ch=getchar())!=' ' ) //输入字符,直到回车结束(测试人员可在输入几个字符后,停几秒,再按回车,就可以验证”回车后才读取缓存“这句话了。)
{
printf("your input: %c, sleep 1s ", ch );
Sleep(1000); //暂停1秒
}
}