如何在C中存储事先不知道大小的数字序列?

时间:2018-10-02 22:33:15

标签: c input malloc

我正在用C语言编写标准偏差程序,并且难以输入预期的输入。

我必须接受未知数量的浮点数,而且我不确定如何存储它们并为它们分配内存。

样本输入:

82.5
1000.6699
10
11.11
-45
#

任何建议都值得赞赏。

新用户,对您的小失误

2 个答案:

答案 0 :(得分:0)

您可以分配一个数组来保存您的值,并且可以使用realloc()来扩展该数组。

因为realloc()有一些开销,所以我可能会为16个值分配足够的内存。并填充它时,然后调整其大小以容纳最多16个值,依此类推。这样,您的代码不会为每个值调整内存大小。

答案 1 :(得分:-1)

实际上只有两种方法。首先是定义一个 struct

typedef struct {
    int value;
    element* next;
} element;

然后,您有了所谓的链表。您可以通过迭代链接的element结构来访问第n个元素,并且知道element.next是空指针(并且element->next是SegFault或返回废话)。

第二种方法是“安全使用”并定义一个固定长度的数组,该数组是您所需的最大大小。像这样:

int my_array[65535];

这是有优势的,因为数组比链接列表快得多(您不必迭代访问第n个元素),但是如果数组长度高度可变,则分配的内存可能比必需的多得多。由您自己决定。