getchar()是从stdin的缓存(缓冲区)中读取字符的,而不是键盘输入一个字符getchar就获取一个字符。原理简要如下:
1. 程序在执行到getchar()时停了下来,等待程序的输入缓冲区中输入数据。
2. 按键产生键盘中断,中断服务程序把键值存到键盘缓冲区。
3. 在行缓冲模式下,只有输入回车后,中断服务程序才会把数据(一行包括一个换行符号)送到程序的输入缓冲区中。
4. 程序调用getchar实际上是从输入缓冲区中取一个字符,并把这个字符从输入缓冲区中删除,缓冲区中字符数简减1。假如在调用getchar时,输入缓冲区内已经有字符了,即使没有按键盘,getchar也能从输入缓冲区取到一个字符,并把这个字符从输入缓冲区删除。
阅读(1191) | 评论(0) | 转发(0) |