/**
c和指针 第11章 第二题
从标准输入中读取一系列的整数,
把这些值存储在一个动态分配的数组中
并返回这个数组。数组的第一个元素是该数组的长度
其他元素是输入的整数
*/
#include <stdio.h>
#include <stdlib.h>
//定义一个长度,最开始时分配的长度
#define LENGTH 20
int *read_ints()
{
int *num;
int tem;
int count = 0;
int size = LENGTH;
//分配内存
num = malloc((size+1)*sizeof(int));
//内存分配失败,返回NULL
if(num==NULL)
return NULL;
while(scanf("%d",&tem)!=EOF)
{
count++;
//如果长度大于分配的内存,则需要增加内存,使用realloc分配
if(count>size)
{
size += LENGTH;
num = realloc(num,(size+1)*sizeof(int));
if(num==NULL)
return NULL;
}
num[count] = tem;
}
if(count<size)
{
num = realloc(num,(count+1)*sizeof(int));
if(num==NULL)
return NULL;
}
num[0] = count;
return num;
}
int main()
{
int *array;
int i;
array = read_ints();
for(i = 1;i<=array[0];i++)
printf("%d ",array[i]);
return 0;
}