getchar 意思是获取一个输入的字符,获取成功返回值为该字符所对应的ASCII码的值,获取失败,返回值为-1(EOF),所以他的返回值的规定为int 。
putchar 意思是在屏幕上打印输入的字符。
缓冲区指的是scanf getchar 这两个函数,并不是直接从键盘上去获取数据,而是从缓冲区里去拿到数据,键盘上输入的字符,先会放在缓冲区里 。。输入密码并且确(Y/N)。
输入的密码为123456,scanf在缓冲区里拿走了123456,因为scanf函数默认拿走\n前面的数据,\n默认为是想讲密码输入进去,并无实际意义。
但是后面的getchar函数呢,发现了\n,直接拿走了,导致运行结果如下图(因为只有Y才能确认成功,\n不能)。
程序并没有等待我去输入(Y/N),就直接确认失败了。
方法:用一个getchar去拿走\n:
运行结果如下;
但是如果密码是123456 abc又不能成功了,键盘上输入的是123456 abc\n
因为,scanf又只是拿走了123456,而后面的空格abc\n,没有拿走,此时一个getchar已经不能解决问题了。
我们采用循环使用getchar:
条件虽然是,获取的字符不是\n,但是最后一次会拿走\n并且跳出循环。