缓存-c语言中的“Enter”键功能,求大神

问题描述

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

缓存-c语言中的“Enter”键功能,求大神的相关文章

c语言-C语言中的函数问题,求大神教我怎么完成。。。。

问题描述 C语言中的函数问题,求大神教我怎么完成.... C语言中的函数问题,求大神教我怎么完成................ 解决方案 #include <stdio.h> int add(int a, int b) // 定义函数 { return a + b; } int main() { int x = 1, y = 2; int r = add(x, y); // 调用函数 printf("%dn", r); } 解决方案二: printf("...&

php-怎样删除二维数组中相同的一位数组 并保持相同键名 求大神写个函数

问题描述 怎样删除二维数组中相同的一位数组 并保持相同键名 求大神写个函数 Array ( [0] => Array ( [year] => 2013-2014 [term] => 1 [course_code] => 00008069 [course_name] => 咖啡世界 [course_nature] => 任意选修 [course_attribution] => 人文素养类 [credit] => 2.0 [point] => 4.1 [g

c语言取小数问题,急求大神解答!

问题描述 c语言取小数问题,急求大神解答! 程序是#include int main() { float a,b; int n; scanf("%f",&a); n=(1000*a+0.5); b=(n*1.0)/1000; printf("%f",b); return 0; } 输入123.4567 输出是123.457001 输入1234.567 输出时1234.567017 输入12345.67 输出是12345.669922 为什么会这样呢?求大神解

c语言-C语言的一个小问题,求大神

问题描述 C语言的一个小问题,求大神 #include int main() { float c,f; scanf("%f",&f); c=(5.0/9)*(f-32); printf("摄氏度为%fn",c); return 0; } 语句c=(5.0/9)*(f-32); 中的5.0换成5的话输出结果就错了,这是为什么呀,求大神指点 解决方案 如果除数是5的话,那么/就是整除的意思. 你也可以写成 5f,让它被视作是float 解决方案二: 5/9 取整

c语言指针指向地址的问题 求大神详细解答

问题描述 c语言指针指向地址的问题 求大神详细解答 #include int main(int argc char const *argv[]){ int b=0x12345678;char *p4=(char *)&b;printf(""p=0x%hhxn""*p4 );printf(""p=0x%hhxn""*(p4+1) );char *p7=""helloworld"";

页面显示-为什么页面上 显示不出jsp中label 里的文字 求大神指教

问题描述 为什么页面上 显示不出jsp中label 里的文字 求大神指教 为什么页面上 显示不出jsp中label 里的文字 求大神指教 解决方案 你要显示什么东西?把代码贴出来 解决方案二: 你这是表格还是div的?如果是表格的话应该就没有这问题吧.div的话可能被覆盖了.div的话可以这样试试: 密码 相关文章 java web-.jsp页面中如何把文字写在图片上想要的位置? jsp-在一个JSP页面显示显示两张表的数据,求大神求好心淫 帮帮我~~~~~~ java web-求大神指教关于J

jquery点击左边td中的h1标签时,右边td中的图片更换,求大神实现

问题描述 jquery点击左边td中的h1标签时,右边td中的图片更换,求大神实现 jquery点击左边td中的h1标签时,右边td中的图片更换,求大神实现如图,点击ddd的时候,右边的图片更换,请问怎么做到? 解决方案 $('td h1').click(function(){ $(this).closest('td').next().find('img').attr('src''图片地址');//如果你的图片td和h1所在td不是相邻关系,注意自己修改这里的过滤})

ios-iOS的GCD中的一点疑惑,求大神详解

问题描述 iOS的GCD中的一点疑惑,求大神详解 dispatch_queue_create(""队列名"",0),这个队列名有什么作为,创几个线程这个队列名,不管一样不一样,作用都一样 解决方案 ios-GCD详解iOS-GCD多线程编程详解5IOS GCD的使用详解

java中注解的问题,求大神指教,膜拜

问题描述 java中注解的问题,求大神指教,膜拜 就像这个应该是注解吧.在另一个类中调用属性值得时候,为什么是用的get/set方法,不是在私有化的时候才需要get.set方法么.而且在别人的电脑上能运行,在我的电脑上就报错. 解决方案 因为spring中大多注入的时候都是通过set方法 解决方案二: 那为什么在我的电脑上就报错呢 我自己再把public修改成私有的在加上get/set方法就没事了 解决方案三: 一般来说,定义属性的时候有私有的 通过公有的get/set获取私有属性或者给私有属性

报表-C++Builder中fastreport的问题,求大神指点,不胜感激!!!

问题描述 C++Builder中fastreport的问题,求大神指点,不胜感激!!! 如图所示是制作的报表,当每个Test为FAIL时,不想让这个条显示,但下面Test为PASS时,会自动移到Test为FAIL的那个条的位置,我该怎么实现?好比如图,BUS InterfaceTest为FAIL时,Flash Interface Test为PASS时,Flash Interface Test这个条移动到BUS InterfaceTest条的位置.当然这四个条都有可能为FAIL或PASS.因为是新