c语言怎么输入任意长度的一个数组

如题所述

首先 严格来说 不可能出现任意长度。 内存是有限的 超出一定长度后,不可能存的下,虽然这个值可能是超级大的,但总有限度。

其次,所谓的任意长度,其实就是可变长数组。
那么,在事先不知道数组规模下,就要靠输入,来确定数组大小了。
重点在于,要开辟多大的数组来存

一般有这么几种情况
1 直接开一个足够大的。 比如 虽然不知道有多大,但最大不超过1000个,那就可以直接开个1000元素的数组。
2 动态分配, 使用malloc动态分配内存。
当出现可能的不够情况,用realloc重新分配。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-02
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i=0,n=1;
    int *a;
    a=malloc(n*sizeof(int));
    do
    {
        scanf("%d",&a[i++]);
        realloc(a,++n*sizeof(int));
    }while(getchar(a[i-1])!='\n');
    for (i=0;i<n-1;i++)
        printf("%d ",a[i]);
    printf("\n");
}

第2个回答  2016-12-12
办法不少,正宗的是用链表。
相似回答