各位大哥如何创建一个超大的二维数组,并将数据储存进去,转置再读取出来?
没用过直接定义数组以外的其他定义方式,之前大一点的用Static可以解决,现在这个数组实在太大了。。在网上照猫画虎的,也不知道怎么修改,还请各位指教贴出部分代码,为了测试改成了一个5*3的数组,原来是一个33600*27375的数组,
printf("%3.2f\n", arr[i][j]),打印的全是0.00
程序代码://======================================================
//将oringin文件进行转置,最后输出的a矩阵
//
//======================================================
//基本数据
const int HANG =5;//33600行(总网格数)!!修改
const int LIE = 3;// 27375列(总天数,也就是数据量)!!修改
//=====================================================
//基本数据!!!!!修改
const int yrolls = 3;//列数
const int xrolls = 5; //行数
int main(){
//======================================================
//文件操作
FILE* out, *in;
in = fopen("F:\\2017C\\5X3.asc", "r");//输!入!!!修改
out = fopen("F:\\2017C\\3x5.asc", "w");//输出!!修改
//创建大型二维arr矩阵
const int M = HANG, N = LIE;//M行N列(每一行有27375个数据)
int** arr = (int **)malloc(sizeof(int *)*M);
for (int i = 0; i<M; i++)
arr[i] = (int *)malloc(sizeof(int)* N);
//读入数据
while (!feof(in))
{
for (int i = 0; i < HANG; i++){ //i<行数 210行*160列
for (int j = 0; j < LIE; j++){ //j<列数 75年*365天
fscanf(in, "%f", &arr[i][j]);
printf("%3.2f\n", arr[i][j]);
}
}
}
for (int i = 0; i<M; i++)
free(arr[i]);
free(arr);[此贴子已经被作者于2017-12-15 14:58编辑过]



