为什么scanf函数中不能加\n-创新互联

当代码是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元起,快前往官网查看详情吧


本文标题:为什么scanf函数中不能加\n-创新互联
文章转载:http://pwwzsj.com/article/coogps.html