我有一个关于C语言中for循环工作的问题。请看下面的代码:
当我执行此操作并提供以下输入时:
#include<stdio.h>
void main()
{
int ar[10],i;
printf("Enter 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&ar[i]);
for(i=0;i<10;i++)
printf("%d",ar[i]);
}
当我执行此操作并提供以下输入时:
1 2 3 4 5 6 7 8 9 10 11 12
我已经输入了12个值,但循环只应该运行10次(scanf循环)。我可以提供更多的输入,它也可以接受,除非我按下回车键。这里有什么关于for循环的问题我漏掉了吗?
scanf()
时可能会出现问题,因为多余的数字仍然存在于缓存中等待被读取。 - Crowmanscanf()
调用将读取由空格分隔的单个数字,无论这些空格是换行符还是普通空格。在第一次scanf()
调用返回后,它只读取了第一个数字,而你输入行的其余部分仍在输入缓冲区中等待下一次scanf()
调用。 - Crowman