#include #include #include "gribw.h" /* read write binary f77 ieee style arrays */ float *rd_f77data(int *n, FILE *in) { int i, ii; float *a; if (fread(&i, sizeof(int), 1, in) != 1) { fprintf(stderr,"missing binary data!\n"); exit(8); } if (i % sizeof(float) != 0) { fprintf(stderr,"not a float array!\n"); exit(8); } if (i) { if ((a = (float *) malloc(i)) == NULL) { fprintf(stderr,"not enough memory in read_data!\n"); exit(8); } if (fread(a, 1, i, in) != i) { fprintf(stderr,"missing binary data!\n"); exit(8); } } else { a = NULL; } if (fread(&ii, sizeof(int), 1, in) != 1) { fprintf(stderr,"missing trailer!\n"); exit(8); } if (i != ii) { fprintf(stderr,"f77 format?\n"); exit(8); } *n = i / sizeof(float); return a; } void rd_n_f77data(float *a, int n, FILE *in) { int i; if (fread(&i, sizeof(int), 1, in) != 1) exit(8); if (i != n * sizeof(float)) exit(8); if (fread(a, sizeof(float), n, in) != n) exit(8); if (fread(&i, sizeof(int), 1, in) != 1) exit(8); if (i != n * sizeof(float)) exit(8); } void wrt_n_f77data(float *a, int n, FILE *out) { int i; i = n * sizeof(float); if (fwrite(&i, sizeof(int), 1, out) != 1) exit(8); if (fwrite(a, sizeof(float), n, out) != n) exit(8); if (fwrite(&i, sizeof(int), 1, out) != 1) exit(8); }