如何在C语言中存储大小未知的数字序列?

如何在C语言中存储大小未知的数字序列?,c,input,malloc,C,Input,Malloc,我正在用C语言编写一个标准差程序,在输入时遇到了困难 我必须接受未知数量的浮动,我不知道如何存储它们并为它们分配内存 样本输入: 82.5 1000.6699 10 11.11 -45 # 82.5 1000.6699 10 11.11 -45 # 任何建议都将不胜感激 新用户,为一些小错误感到抱歉实际上只有两种方法。第一个是定义结构: 然后,你就有了所谓的链表。您可以通过迭代链接的元素结构来访问第n个元素,当元素为空指针时,您就知道已经到达了结尾。next是一个空指针(而元素->next是一个

我正在用C语言编写一个标准差程序,在输入时遇到了困难

我必须接受未知数量的浮动,我不知道如何存储它们并为它们分配内存

样本输入:

82.5 1000.6699 10 11.11 -45 # 82.5 1000.6699 10 11.11 -45 # 任何建议都将不胜感激


新用户,为一些小错误感到抱歉

实际上只有两种方法。第一个是定义结构:

然后,你就有了所谓的链表。您可以通过迭代链接的
元素
结构来访问第n个元素,当
元素为空指针时,您就知道已经到达了结尾。next
是一个空指针(而
元素->next
是一个SegFault或返回无意义)

第二种方法是“谨慎行事”,并定义一个固定长度的数组,该数组是您需要的最大大小。比如:

int my_array[65535];

这是有利的,因为数组比链表快得多(不必迭代访问第n个元素),但如果数组长度是高度可变的,则可以分配比需要多得多的内存。您可以分配一个数组来保存您的值,并且可以使用
realloc()
来扩展该数组


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

从数学上讲,可以计算数字列表的标准偏差,而无需存储它们。如果你知道你需要为数字积累什么信息,那么数学可以在一次对数字的传递中完成。永远不要发布图片,或者更糟糕的是,仅仅是一个链接,当它只是文本时。改为添加文本。(0)您说必须接受“未知数量的整数”,但示例数据显示的是非整数。你必须澄清问题陈述。(1) 你说你需要计算一系列数字的标准偏差,并询问如何将它们存储在内存中,但没有必要为了计算它们的标准偏差而存储数字(根据我上面的评论)。项目分配是否明确要求您将数字存储在内存中?(2) 您说您的程序必须使用
argv
接受输入,但也说输入用换行符分隔。通过argv传递的参数通常不包括换行符。通常,新行出现在来自文件流的输入中。您应该通过哪种方式获取输入?所有输入是否都来自
argv
?以什么形式?还是从标准输入读取数字?还是从文件中?
argv
中是否有任何内容?可能是一些数字或要读取的文件名?以、读取和为例。第三种选择是只存储刚刚读取的文件。OP的情况下不需要列表。(0)实际上并不是只有两种方法。(1) 对于这个简单的问题,不需要链表,这将是浪费。(2) 固定“最大”大小的数组不能满足接受未知数量输入的问题要求。谁在不评论问题的情况下对答案进行向下投票?
int my_array[65535];