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

在下面的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()在第一次迭代,为第二次迭代的输入


jeck猫
浏览 315回答 1
1回答

炎炎设计

scanf使输入流指向\n。对于您而言,这没有什么区别:每次调用它时,它scanf都会一直移动直到找到下一个非空白字符。因此,给它10行name, a, b作为输入将按预期工作。但是考虑一下:scanf("%d", &a);fgets(str, 20, stdin);fgets读取直到它找到第一个换行符,所以str只会得到的值\n,并且fgets将不读取输入的下一行。
打开App,查看更多内容
随时随地看视频慕课网APP