淬然 2023-07-12 17:02 采纳率: 100%
浏览 70
已结题

C语言怎么输入不定长度数组

我想输入未知长度的一组数字,传到数组里,遇到-1就停止,怎么定义数组并且保存数字?

遇到的问题是,在如下代码下运行,只能传入四个数字,再多就打印不出来了。哪里错了,要怎么写呢

#include<stdio.h>
int main()
{
    int n=1,max;int a[n];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);//2 -1//a[0]=2,n=2,i=1
        if(a[i]==-1)
        {
            n--;
            break;
        }
        n++;
    }
    for(int i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-07-12 23:35
    关注

    供参考:

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        int n = 0, x, i, *a = NULL;
        while (1) {
             scanf("%d", &x);
             if (x == -1) break;
             a = (int *)realloc(a,sizeof(int)*(n + 1));
             if (!a) return 1;
             a[n++] = x;
        }
        for (i = 0;i < n;i++)
            printf("%d ", a[i]);
        free(a);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月27日
  • 已采纳回答 7月19日
  • 创建了问题 7月12日