Как записывать структуры и читать массивы на Си?
Надо записать в файл массив, входящий в структуру, а в другой программе прочитать в массив. Написал код, а читающая массив программа выдаёт, что все члены массива равны нулю, хотя в них были записаны не нули.
Программа 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;
}