首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接受数组大小未知的输入

接受数组大小未知的输入
EN

Stack Overflow用户
提问于 2020-07-23 23:13:48
回答 1查看 70关注 0票数 0
代码语言:javascript
复制
#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,它导致了无限循环的输入,如何在离线编译器中获得类似的结果?

EN

回答 1

Stack Overflow用户

发布于 2020-07-24 00:05:25

scanf()函数返回它扫描的输入值的数量。

在输入错误或失败的情况下,它返回EOF。按照注释中的建议,您可以将scanf()返回值与1进行比较,以查看它是否有有效的输入。因此,如果您的输入不是int,它将结束循环。

此外,在调用scanf()之前,确保n仍然在数组边界内也是一个好主意。

因此,您可以像这样编写代码

代码语言:javascript
复制
#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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63057506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档