提问人:Subhradwip Ghosh 提问时间:7/23/2020 最后编辑:Subhradwip Ghosh 更新时间:8/4/2020 访问量:81
接受未知大小的数组输入
Taking input of unknown size of array
问:
#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,因此会导致输入的无限循环,以及如何在离线编译器中获得类似的结果?
答:
1赞
Abcd Efg
7/24/2020
#1
该函数返回它扫描的输入值的数量。scanf()
如果输入错误或失败,它将返回 .
正如注释中建议的那样,您可以将返回值与 1 进行比较,以查看它是否具有有效的输入。因此,如果您的输入不是 ,它将结束循环。EOF
scanf()
int
此外,在调用之前确保仍在数组范围内也是一个好主意。n
scanf()
所以你可以这样写代码
#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;
}
评论
while(scanf("%d",&a[n++])!=EOF);
while(scanf("%d",&a[n++])==1);
n
while(n < 50 && scanf("%d",&a[n++])==1);
1
scanf
0 != EOF