getchar是读入函数的一种。它从标准输入里读取下一个字符,相当于getc(stdin)。返回类型为int型,为用户输入的ASCII码或EOF。
描述
C库函数int getchar(void)从标准输入stdin获取一个字符(一个无符号字符)。这等同于getc带有stdin作为参数。
声明
int getchar(void)
返回值
函数的返回值为用户输入的第一个字符的ASCII码,若出错返回-1,且将用户输入的字符回显到屏幕。如果用户在按回车键之前输入了不只一个字符,其他字符会保留在键盘缓冲区中,等待后续getchar()调用读取。也就是说,后续的getchat()调用不会等待用户按键,而是直接读取缓冲区中的字符,直到缓冲区的字符读取完毕后,才等待用户按键。
说明
getchar()非真正函数,而是getc(stdin)宏定义。
程序例
例1
#include
int main(void)
{
int c;
/* Note that getchar reads from stdin and
is line buffered; this means it will
not return until you press ENTER. */
while ((c = getchar()) != '//n')
printf("%c", c);
return 0;
}
注:可以利用getchar()函数让程序调试运行结束后等待编程者按下键盘才返回编辑界面,用法:在主函数结尾,return 0;之前加上getchar();
例2
#include
int main()
{
char a,b;
a=getchar();
b=getchar();
putchar(a);
putchar(b);
}
我们输入x-回车-y-回车
结果会是xy吗?不是的,结果是a=x b='//n'(回车)
当我们开始打x的时候,x在缓冲区,当我们按下回车的时候,第一个getchar()才获取到x这个值顺利存到a里,但回车既是确定又是字符,回车'//n'它也跟着进了缓冲区,并且和x一起被释放,x到了程序里,回车('//n')也到了程序里,并且被第2个getchar()获取,此时我们输入y,这时缓冲区里有一个字符'y',然后我们又按下回车,'y'和'//n'又一起准备被释放,由于程序里没有第3个getchar(),所以'y'和'//n'还留在缓冲区,但它们两个已经是在准备状态中,如果程序又出现一个getchar(),'y'不需要你按回车它会直接进入到第3个getchar(),getchar()是依次获取,按先后顺序,不会先获取'//n',而'//n'正等待着马上进入第4个getchar()
该文章由作者:【留下来陪你生活】发布,本站仅提供存储、如有版权、错误、违法等相关信息请联系,本站会在1个工作日内进行整改,谢谢!