所以我正在编写一个程序,它从标准输入中接收任意数量的整数,我需要为输入动态分配足够的空间。
这对我来说不是问题,除了两个原因:1)你没有指定会有多少输入,所以我不能只使用 calloc 和输入的数量而不已经阅读它们并计数。2) 我不能使用 realloc 来增加数组的大小。
有没有办法计算输入中有多少整数,然后再次读取它们并将它们放入数组中?
所以我正在编写一个程序,它从标准输入中接收任意数量的整数,我需要为输入动态分配足够的空间。
这对我来说不是问题,除了两个原因:1)你没有指定会有多少输入,所以我不能只使用 calloc 和输入的数量而不已经阅读它们并计数。2) 我不能使用 realloc 来增加数组的大小。
有没有办法计算输入中有多少整数,然后再次读取它们并将它们放入数组中?
首先,为什么不能使用realloc()
?
如果你真的不能,考虑创建一个整数链接列表,其中定义了列表元素,如下所示:
typedef struct tNumber
{
int Number;
struct tNumber* Next;
} tNumber;
有没有办法计算输入中有多少整数,然后再次读取它们并将它们放入数组中?
没有。
使用链表。您可以根据需要分配新空间,而无需移动现有数据。
有没有办法计算输入中有多少整数,然后再次读取它们并将它们放入数组中?
我能想到的唯一方法是tmpfile()
按照您的计数复制到 a 中,然后再复制rewind()
文件并再次读取。