0
我有這種讀取文件的方法。一個矩陣更具體,前兩個數字是行和列。但是,當我嘗試分配內存使用malloc和使用行和列的應用程序崩潰。如何使用此malloc語句分配內存?
我正在使用的代碼是這一個:
#include stdio.h
#include stdlib.h
#include stdlib.h
float * readFile(char* nombre, int*renglones, int*columnas){
FILE *fp;
fp=fopen(nombre,"r");
fscanf(fp,"%d",&renglones);
printf("el numero de renglones es %d\n",renglones);
fscanf(fp,"%d",&columnas);
printf("number of rows %d\n",columnas);
float value;
fscanf(fp,"%f",&value);
printf("el numero de columnas es %f\n",value);
fscanf(fp,"%f",&value);
printf("el numero de columnas es %f\n",value);
printf("no llegue a malloc");
float * res = malloc(*renglones**columnas*sizeof(float)); //memory reservation and the line that breaks the program
printf("after malloc");
fclose(fp);
return 0;
}
我知道,包括有<
之間>
最後的代碼是這樣一個與包括:stdio.h中和STDLIB .hfloat * readFile(char* nombre, int*renglones, int*columnas){
FILE *fp;
fp=fopen(nombre,"r");
fscanf(fp,"%d",renglones);
printf("el numero de renglones es %d\n",renglones);
fscanf(fp,"%d",columnas);
printf("el numero de columnas es %d\n",columnas);
float value;
float * res = (float*)malloc(*renglones**columnas*sizeof(float)); //Reserva de memoria
printf("llegue a malloc\n");
int i;
for(i=0;i<*renglones**columnas;i++){
fscanf(fp, "%f",&value);
res[i]=value;
printf("dato %f\n",value);
}
printf("%d",i);
fclose(fp);
return res;
}
謝謝!
什麼是「行」和「列」? – yngccc 2013-05-11 00:13:24
我已更改爲「columnas」和「renglones」。 – Mike930494 2013-05-11 00:18:12
也以這種方式float * res =(float *)malloc(rows * columns * sizeof(float));但它不起作用 – Mike930494 2013-05-11 00:23:01