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

scanf()是否将'\ n'作为上一个scanf()的剩余输入?

scanf()是否将'\ n'作为上一个scanf()的剩余输入?

C
jeck猫 2019-11-20 14:30:03
在下面的C代码中:char name[20];int a;int b;for(i=0;i<10;i++){    printf("\nEnter name, a & b: ");    scanf("%s %d %d",name,&a,&b);}不scanf读的'\n',在年底进入了scanf()在第一次迭代,为第二次迭代的输入
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

scanf使输入流指向\n。对于您而言,这没有什么区别:每次调用它时,它scanf都会一直移动直到找到下一个非空白字符。因此,给它10行name, a, b作为输入将按预期工作。


但是考虑一下:


scanf("%d", &a);

fgets(str, 20, stdin);

fgets读取直到它找到第一个换行符,所以str只会得到的值\n,并且fgets将不读取输入的下一行。


查看完整回答
反对 回复 2019-11-20
  • 1 回答
  • 0 关注
  • 314 浏览

添加回答

举报

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