
实际上 getchar 是执行这样一个 *** 作,fgetc( STDIN ),从标准输入 STDIN 文件中读取一个字符。
这个STDIN是让册以文件形式存在的,而且是带有缓冲的文件。所以准银滑旅确的说你的输入被组织锋凳成一个文件形式。
分两种: 1.硬盘磁盘缓存:一般就是硬盘上自带的缓存(也就是一个内存颗粒)一般硬盘为2MB,现在主流硬野枣陪盘为8MB缓存。不能更改。 2.移动设备缓存(优盘,移动硬盘等):硬盘磁盘岩圆缓存其实是你的机箱内部的硬盘颂蠢和内存充当了这个角色,这也就是WINDOWS2000系统不能直接热插拔USB设备的主要原因(容易丢失文件),而必须安全删除设备后才可以热插拔USB设备。XP系统为了防止这种问题,默认不启用移动设备缓存。这个值也不能直接修改。当循环时使用scanf函数时,或是多次用时,要清除缓冲区内容(scanf函数是缓冲输入,类似与栈的形式,必须清除),否则会有上一次输入的内容或将回车认为是换行等问题。在多次使用输入时,要谈衫或在用后清除缓冲区内容。一般用 setbuf(stdin,NULL);来实现。因此,如果塌衡你的程序只有一个输入,那么一般是必要清除了,如果有循环使用,最好在都清除,即循环时,每用一次就清除,这样就保证下一次含伍正确了。
个人观点。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)