未知输入数量的动态内存分配(无realloc)

时间:2013-02-22 03:09:09

标签: c

所以我正在编写一个从stdin接收任意数量整数的程序,我需要为输入动态分配足够的空间。

除了两个原因,这对我来说不是问题: 1)你没有指定将有多少输入,所以我不能只使用calloc以及输入数量而没有读取它们并计数。 2)我不能使用realloc来增加数组的大小。

是否有某种方法可以计算输入中有多少个整数,然后再次读取它们并将它们放入数组中?

2 个答案:

答案 0 :(得分:1)

首先,为什么不能使用realloc()

如果你真的不能,可以考虑创建一个整数的链表,列表元素定义如下:

typedef struct tNumber
{
  int Number;
  struct tNumber* Next;
} tNumber;
  

是否有某种方法可以计算输入中有多少个整数,然后再次读取它们并将它们放入数组中?

没有。

答案 1 :(得分:0)

使用linked-list。您可以根据需要分配新空间,而无需移动现有数据。

  

是否有某种方法可以计算输入中有多少个整数,然后再次读取它们并将它们放入数组中?

我能想到的唯一方法是在计算时复制到tmpfile(),然后复制rewind()文件并再次阅读。