2013-02-22 28 views
1

所以我正在写一个程序,从标准输入接收任何数量的整数,我需要为输入动态分配足够的空间。动态内存分配为未知的输入数量(不realloc)

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

有什么方法可以统计输入中有多少个整数,然后再次读取它们并将它们放入数组中?

回答

0

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

有什么方法可以统计输入中有多少个整数,然后再次读取它们并将它们放入数组中?

我能想到的做到这一点的唯一方法是复制到tmpfile(),你算的话,rewind()文件并再次读取。

+0

好主意,谢谢! – user2097845 2013-02-22 03:25:07

1

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

如果实在不行,可以考虑创建一个整数与列表元素链表定义是这样的:

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

是否有某种方式来算多少整数,在输入,然后阅读再次通过它们并将它们放入数组中?

没有。

+0

是的,绝对使用链表。并感谢您回答我的问题。我不能使用realloc(),因为我们的老师不允许我们使用。 – user2097845 2013-02-22 03:28:16