C生万物之从键盘输入

思考了整整两天,关于从键盘输入这个问题总算时思考清楚。

我们知道C语言中常见的输入方法有三种(gets,getchar,scanf),gets函数是将缓冲区的一个字符放入对应指向的地址中,也就是说,它的形参是一个指针,getchar与gets相似,只不过形参为void返回类型为int,表示ASCII值。scanf函数相比较它俩困难的多,因为它可以控制类型。

首先可以肯定的是,当我们输入时从键盘码的每一下都会放入缓冲区,那么放入后,哪些东西不会消失,哪些会消失呢。

C生万物之从键盘输入_第1张图片

这里我两次输入int型数据,注意两次输入我都按了一些回车啊,那这个东西肯定是在缓冲区的,那为什么第二次我仍然可以输入,原因就是除了字符型数据外,其他数据会找非\n和非空格的数据,而\n和空格都会被干掉直到找到下一个数据,否则会让你输入数据,但找到的数据不一定是和自己类型匹配的数据,比如我要int型,而我找到了a,那么这行语句这个整形就不会放入数据,但也不会让你输入。再次输入就从这个数据继续向后。而字符型不论你缓冲区的是什么东西,他都会哪出来,因为我们要知道,只要是我们从键盘直接输入的内容都是可以转换为ASCII值的,这里那数据,包括换行和空格。这是一个比较复杂的问题,uu们可以实验一下,这样更能加深自己的印象。

你可能感兴趣的:(c语言,c++,开发语言)