У меня есть этот метод, который читает файл. Матрица, чтобы быть более конкретным, где первые два числа - это строки и столбцы. Однако, когда я пытаюсь выделить память с помощью 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.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("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;
}
Спасибо!
rows
иcolumns
?? - person yngccc   schedule 11.05.2013(*renglones)*(*columnas)*sizeof…
меняет ситуацию? - person Stefano Sanfilippo   schedule 11.05.2013*
может где-то проскользнуть и привести к сбою из-за глупых ошибок сегментации. Опубликовано как комментарий, так как это, очевидно, не ответ, в любом случае.... - person Stefano Sanfilippo   schedule 11.05.2013-Wall
или эквивалентными флагами компилятора. - person Jens Gustedt   schedule 11.05.2013