Как записывать структуры и читать массивы на Си?

Надо записать в файл массив, входящий в структуру, а в другой программе прочитать в массив. Написал код, а читающая массив программа выдаёт, что все члены массива равны нулю, хотя в них были записаны не нули.

Программа 1

#include <stdio.h>
#include <stdlib.h>
int  main (  void  )  {
   FILE *  fl;
   int  r = 3;
   struct st {
      double  d [ r ];
   } s;
   s. d [ 0 ] = 3.14;  s. d [ 1 ] = 6.35;  s. d [ 2 ] = 93.8;
   struct st *  u = & s;
   if (  ( fl = fopen (  "m.bin",  "a+b" )  ) == NULL  )    exit ( 0 );
   if (  fwrite (  u -> d,  sizeof ( double ),  ( size_t )r,  fl  )  != ( size_t )r  )    exit ( 0 );
   fclose ( fl );
   return 0;
}

Программа 2

#include <stdio.h>
#include <stdlib.h>
int  main (  void  )
{
   FILE *  f;
   long int  r;
   double dw = 3;
   double  m [ 3 ];
   if (  ( f = fopen ( "m.bin", "rb" ) ) == NULL  )    exit ( 0 );
   if (  fseek (  f,  0,  SEEK_END  ) != 0  )    exit ( 0 );
   if (  ( r = ftell ( f ) ) == -1L  )    exit ( 0 );
   rewind (  f  );
   if (  fread ( m,  sizeof ( double ),  (size_t) dw,  f ) != (size_t) dw  )    exit ( 0 );
   printf ( "\nm[0]=%lf, m[1]=%lf, m[2]=%lf",  m [ 0 ],  m [ 1 ],  m [ 2 ] );
   fclose ( f );
   return 0;
}

Ответы (0 шт):