新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
当代码是scanf(“%d\n”,&a);时
创新互联主要从事网站设计、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务横峰,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108如果你输入数字后一直按回车,scanf就会一直阻塞在那里,直到你再一次输入。
而且运行结果只会识别第一个数,不会识别第二个数。如图,
当你代码是scanf(“%d”,&a);时,代码就会很顺利的成功运行
这是为什么呢?为什么scanf 函数中加了\n会出现这种情况呢?
原来,
C程序执行scanf时,会从缓冲区读数据,如果缓冲区是空的,就阻塞住,等待你从键盘输入。
输入结束后按回车会执行scanf函数,程序会逐个读取缓冲区的数据,注意,这时会将\n留在缓冲区(缓冲区只剩下\n)
当代码是scanf(“%d\n”,&a);时,scanf函数的第一个参数(即%d\n)指定了后面变量读取的格式,j就是会按照 数字 回车 的格式读取,当你输入数字结束按回车时,刚好满足这种形式,这时缓冲区内什么都没有。
这时就需要再一次输入然后再按回车,使\n可以留在缓冲区。这样代码才会继续往下执行。
而且,\n是回车的意思,scanf函数是输入函数,顾名思义,输入函数时不需要我们来换行。
所以,使用scanf函数是不需要加\n的,加了反而会出错。
参考https://blog.csdn.net/weixin_44967885/article/details/108994960
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧