Я хочу использовать или напечатать значение указателя dp, которое должно содержать определенный байт из файла, но оно говорит: "ошибка сегментации (сброшено ядро)" Также, если я хочу напечатать "m "или" n "я получаю то же сообщение об ошибке. как я могу использовать значение указателей m, n, dp? Я только что изменил% s на% f, там написано то же сообщение.
Спасибо
#include <stdio.h>
#include <stdlib.h>
void read_file( char * s, int * mp, int * np, double ** dpp )
{
int m, n ;
double * dp ;
FILE * fp ;
fp = fopen ( s, "r" ) ;
if (fp == NULL) {
fprintf(stderr,"read_file(): Unable to open file '%s'\n", s ) ;
exit(12) ;
}
fread( &m, sizeof(int), 1, fp ) ;
fread( &n, sizeof(int), 1, fp ) ;
/* printf("m = %d, n = %d\n", m, n ) ; */
dp = (double *) malloc( m * n * sizeof(double) ) ;
if (dp == NULL) {
fprintf(stderr,"read_file(): malloc failed for %d bytes on file '%s'\n", m*n*sizeof(double), s ) ;
exit(13) ;
}
fread( dp, sizeof(double), m*n, fp ) ;
fclose (fp) ;
*mp = m ; *np = n ;
*dpp = dp ;
}
int main()
{
char *s="g.dat";
int *m;int *n;
double *dp;
read_file(s,m,n,&dp);
printf("it crashes here... %f\n",*dp);
}
сбой при печати («печать ...% f \ n», * dp); с тем же сообщением об ошибке сегментации.