58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
#include <stdio.h>
|
|
#include <math.h>
|
|
#define nx 192
|
|
#define ny 94
|
|
#define dx 3
|
|
#define dy 3
|
|
/* v1.2 wesley ebisuzaki */
|
|
#define INT int
|
|
/* if the default integer is 16 bit then */
|
|
/* #define INT long int */
|
|
|
|
void main() {
|
|
FILE *in;
|
|
float land[nx];
|
|
INT header;
|
|
int i, j;
|
|
char c;
|
|
|
|
printf("Test creation of a binary file\n");
|
|
printf("before running this program, enter wgrib land.grb -d 1\n");
|
|
|
|
if ((in = fopen("dump","rb")) == NULL) {
|
|
printf("could not find file: dump\n");
|
|
printf("did you run wgrib land.grb -d 1?\n");
|
|
exit(8);
|
|
}
|
|
|
|
if (fread((void *) &header, sizeof(INT), 1, in) != 1) {
|
|
printf("no data?\n");
|
|
exit(8);
|
|
}
|
|
|
|
if (header != nx*ny*sizeof(float)) {
|
|
printf("wrong header size: %d\n", (int) header);
|
|
exit(8);
|
|
}
|
|
|
|
for (j = 0; j < ny; j++) {
|
|
if (fread((void *) land, sizeof(float), nx, in) != nx) {
|
|
printf("not enough data\n");
|
|
exit(8);
|
|
}
|
|
for (i = 0; i < nx; i++) {
|
|
c = '?';
|
|
if (floor(land[i]*10000.0+0.5) == 0) c = ' ';
|
|
if (floor(land[i]*10000.0+0.5) == 10000.0) c = 'x';
|
|
if (c == '?') {
|
|
printf("bad value: %g\n",land[i]);
|
|
exit(8);
|
|
}
|
|
if (i % dx == 0 && j % dy == 0) {
|
|
putchar(c);
|
|
}
|
|
}
|
|
if (j % dy == 0) putchar('\n');
|
|
}
|
|
printf("should see continents -- if you do, it works\n");
|
|
}
|