c语言定义无长度的数组,在C中创建数组而无需提前知道长度

我正在开发一个小程序,以帮助加快我的实验室工作的某些数据分析.它应该从文本文件中读取数据,创建一堆包含该数据的数组,然后进行一些数学运算.

我一直遇到的问题是,我不知道原始文本文件将包含多少行,因此我不知道要制作多大的数组.我对C还是很陌生,现在我对动态大小的数组不满意,这是一些代码

// first determine the length of the file

ifstream dataFile ("xys_data.txt");

const int LENGTH = count(istreambuf_iterator(dataFile), istreambuf_iterator(), '

'); // counts the number of new lines

// declare vector of type datapoint

dataPoint data[LENGTH];

当我尝试编译此错误时

expected constant expression

cannot allocate an array of constant size 0

'data' : unknown size

但是我不是将长度定义为常数吗?

任何帮助将不胜感激.

编辑

遵循几乎所有人的建议,我开始使用std :: vector.我还有最后一个问题,我有点不稳定.

在程序的第一次尝试中,我定义了一个数据结构:

struct dataPoint

{

double x; // x values

double y; // y values

double s; // sigma values

};

然后,当我从文件中读取数据时,我将其发送到该结构,如下所示

while (!dataFile.eof()) // this loop writes out each row of data to the arrays x, y, s until it reaches the end of the file

{

int j = 0;

dataFile >> data[j].x >> data[j].y >> data[j].s;

j++;

}

有什么办法可以使用向量吗?我的第一个想法是定义向量x,y和s,并在循环中用x替换data [j] .x,但这是行不通的.