使用方法
getchar()是一个获取字符的函数,一次只能获取一个字符。获取到的字符用printf()或者putchar()都可以输出。
第一个c是我们输入的,第二个是printf()输出的,第三个是putchar()输出的。
为什么用int 创建变量
在getchar()的函数说明中说道:当发生错误或读到文件尾部,就会返回EOF,切换到反编译中可以看到EOF就是define大一的整型-1。
如果返回-1的时候,我们用char来接收,char类型在读取整数的时候,会发生截断,所以为了不发生意外,我们用int。
问题
在使用getchar()函数的时候我们会遇到一些问题,比如下面这段输入密码并确认的代码。
当我们输入了密码‘123’之后,它会直接显示确认失败,这是因为我们在输完密码之后按了回车,而回车就是‘\n’ ,也就是说这时的输入缓冲区中放的是‘123\n’,当scanf读取缓冲区的时候,遇到\n就会停止,拿走\n之前的字符,留下\n,等到getchar()读取的时候,发现缓冲区中有字符\n,就直接读走了,所以轮不到我们输出,程序就直接执行后面的内容。所以这个时候我们可以写一段循环来优化代码。
当缓冲区中有字符的时候,我们就让getchar()一直读取,直到读取到'\n'。