问题描述
- c语言中的“Enter”键功能,求大神
-
我想问 回车键 到底算是个什么东西???一般我们按下回车键后,键盘缓存区发生了什么???键盘缓存区是什么不是先接收到了 “进行扫描” 后将‘n’输入缓存区?不然怎么老说有残留,有时还要用getchar()来进行吸收..
解决方案
之前回答你了
这种问题根本不要问,看看源代码就知道了
http://www.cnblogs.com/cpoint/p/3373263.html
scanf内部调用getc获取的字符,一上来,首先判断的是参数(format),有了参数才判断分隔符。
23 if (isspace(*format)) {
24 while (isspace(*format))
25 format++; /* skip whitespace */
26 ic = getc(stream);
27 nrchars++;
28 while (isspace (ic)) {
29 ic = getc(stream);
30 nrchars++;
31 }
32 if (ic != EOF) ungetc(ic,stream);
33 nrchars--;
34 }
还有什么不明白具体问
解决方案二:
enter就是往键盘缓冲区里放了一个换行符,但是像scanf之类的是如果发现键盘缓冲区里有换行符就把换行符前面的东西接收进来,换行符并不接收,还在键盘缓冲区里,所以要用getchar清空那个换行符。
解决方案三:
你自己动手跟踪调试进scanf,一目了然的事情
解决方案四:
你在按下回车键时,实际读入输入缓冲区的只有一个换行符('n', 0x0a)。
时间: 2024-10-01 18:37:56