各位大哥如何创建一个超大的二维数组,并将数据储存进去,转置再读取出来?
没用过直接定义数组以外的其他定义方式,之前大一点的用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编辑过]