C 语言(C90)没有动态二维数组。你自己用 malloc 分配内存就好了。
由于 C90 中动态二维数组不存在,所以或者是用一维数组模拟,或者是使用一个动态指
针数组逐行分配内存。
用一维数组模拟的方法:
double *arr = malloc(line * col * sizeof(double));
访问时用 arr[i * col + j] 之类的方式。但分配空间需要知道 line 和 col,所以数据
文件需要预读取,获取行数和列数。
用动态指针数组,简单做法就是直接分配一个足够大的指针数组,然后每行单独分配空间
读入,这可以避免读两次数据文件:
double **arr = malloc(MaxLine * sizeof(double *));
for (i = 0; 没读完; ++i) {
arr[i] = malloc(col * sizeof(double));
向 arr[i] 装数据
}
麻烦一点的,可以让 arr 动态增长。
要不是为了特别省空间,一般用 double,不要用 float。
C99 虽然有 VLA,也不要在这种场合用。VLA 是在栈里分配的,而一般读数据文件是要
超出栈空间的。
【 在 rtm (bob) 的大作中提到: 】
: 数据文件中保存中未知行和列数的float型矩阵
: 怎么从文件中读取数据到二维数组呢
: (我已经解决了未知列数的读取,用feof判读,然后用fscanf读到二维数组中
: ...................