#include <stdio.h>
int main()
{
int a[50],i,n=0;
while(scanf("%d",&a[n++])!=EOF);
n--;
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}让我们,
输入:5 6 7 8 9
输出:5 6 7 8 9
我的问题是,为什么上面的代码在在线C编译器中工作,并给出了适当的EOF(-1)
但是,当在离线C IDE中运行代码时,由于没有提供任何EOF,它导致了无限循环的输入,如何在离线编译器中获得类似的结果?
发布于 2020-07-24 00:05:25
scanf()函数返回它扫描的输入值的数量。
在输入错误或失败的情况下,它返回EOF。按照注释中的建议,您可以将scanf()返回值与1进行比较,以查看它是否有有效的输入。因此,如果您的输入不是int,它将结束循环。
此外,在调用scanf()之前,确保n仍然在数组边界内也是一个好主意。
因此,您可以像这样编写代码
#include <stdio.h>
int main ()
{
int a[50], n = 0;
while((n < 50) && (scanf("%d", &a[n++]) == 1));
n--;
for (int i = 0; i < n; i++)
{
printf("%d", a[i]);
}
return 0;
}https://stackoverflow.com/questions/63057506
复制相似问题