为了账号安全,请及时绑定邮箱和手机立即绑定

求教scanf函数的用法,这段程序到底发生了什么?

求教scanf函数的用法,这段程序到底发生了什么?

C
芜湖不芜 2018-11-13 14:26:39
这段程序是,阻塞,然后等待你输入一个整数,然后原样输出,然后再阻塞,如此循环。(编译器:VS2005)#include<stdio.h>int main(){    int i;    while(1)     {        puts("请输入数字");        scanf("%d", &i);        printf("以整数输出这个值:%d\n", i);     } }但实际上如果输入的字母,再循环回来的时候就不会阻塞,而是会疯狂的循环下去……百度一下,发现scanf函数会从输入缓存(不太懂这是什么东西)中拿走一段数据,如果我输入的是数字的话这个操作就会清空输入缓存,当再次运行scanf函数的时候如果输入缓存是空的,就会产生一个阻塞。然而还是不明白输入字母的情况下发生了什么。
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

好吧,最后还是自己找到了答案……

scanf还有一个特点就是:输入缓存中的字符无法匹配格式化说明符的时候,会立即return掉,该缓存字符也不会被删除。
然后配合上面说的特点:只有输入缓存是空的的时候,才会阻塞,否则不会阻塞。


查看完整回答
反对 回复 2018-11-13
  • 1 回答
  • 0 关注
  • 480 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信