不好意思,我好像在10楼问了一个弱智的问题~~~
现在的教材,真是,该讲的不讲,不该讲的大讲特讲。
getchar()是流输入函数,一旦启用输入输出,没有遇到回车换行符,是不会有结果的,所有数据,都储存在缓冲区中待处理。因此,在你用getchar()函数接受函数的时候,它不理你的键盘动作,你可以尽管敲,但只要敲了回车,getchar()才真正行动起来,不过它只从你刚才敲的一大串字符序列中,提取一个字符,剩下的它不理了,留给下一个要从流输入中读数的函数去提取数据。所以,你这一大串敲下来的字符串,将灌入下一个流输入函数中,比如getchar()、gets()、scanf()等,这就是scanf()函数经常莫名其妙地被跳过的原因,就是上一次动作留下的数据被它读了,不用再敲。
流概念,教材不给你们讲,却去讲什么scanf()的格式,%d、%-4d之类,就是不该讲的大讲特讲。
要精细控制键盘击键,必须用getch()函数(TC系列是getch(),微软系列是_getch()),才会你敲一键它马上接收。比如,你需要4个字符的字符串,满4个字符就停止接收,也只有这个函数才能做到(此时你敲什么键它都能处理,按方向键也可以用程序控制光标来回走,也可以舍弃不合需要的按键,这是getchar()做不到的)。
[ 本帖最后由 TonyDeng 于 2011-11-12 17:47 编辑 ]