1

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

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

有没有办法计算输入中有多少整数,然后再次读取它们并将它们放入数组中?

4

2 回答 2

1

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

如果你真的不能,考虑创建一个整数链接列表,其中定义了列表元素,如下所示:

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

有没有办法计算输入中有多少整数,然后再次读取它们并将它们放入数组中?

没有。

于 2013-02-22T03:12:48.970 回答
0

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

有没有办法计算输入中有多少整数,然后再次读取它们并将它们放入数组中?

我能想到的唯一方法是tmpfile()按照您的计数复制到 a 中,然后再复制rewind()文件并再次读取。

于 2013-02-22T03:12:18.177 回答