#include #include #include #define nx 192 #define ny 94 #define dx 3 #define dy 3 /* v1.2 wesley ebisuzaki */ /* v1.3 Orion Poplawski for Fedora, C99 changes */ #define INT int /* if the default integer is 16 bit then */ /* #define INT long int */ int 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"); }