#include int print_stats = 0; main(argc, argv) int argc; char **argv; { int index; char *name = "../map/cil"; FILE *ind_file = NULL, *unf_file = NULL; int lad, lod, inxct, istrt, irec, lsn, irnk, nop; int ladg, lam, las, lodg, lom, los, ipn, i; float alt, aln, altmn, altmx, alnmn, alnmx; if (argc != 3 || (index = atoi(argv[2])) <= 0) usage(); sprintf(ind_name, "%s.ind", argv[1]); if ((ind_file = fopen(ind_name, "r")) == NULL) { perror(ind_name); exit(1); } sprintf(unf_name, "%s.unf", argv[1]); if ((unf_file = fopen(unf_name, "r")) == NULL) { perror(unf_name); exit(2); } while (fscanf(ind_file, " %6d%8d%3d%8d%6d%10.5f%10.5f%10.5f%10.5f\n", &inxct, &lsn, &irnk, &istrt, &nop, &altmn, &alnmn, &altmx, &alnmx) != EOF) { if (inxct != index) continue; if (fseek(unf_file, (istrt - 1) * sizeof(float), 0) < 0) { perror("fseek"); exit(5); } for (i = 0; i < nop; i++) { if(fread(&alt, sizeof(float), 1, unf_file) < 0) { perror("fread"); exit(6); } if(fread(&aln, sizeof(float), 1, unf_file) < 0) { perror("fread"); exit(7); } printf("%f %f\n", alt, aln); } exit(0); } fprintf(stderr, "%s: Index number %d not found in file %s.\n", argv[0], index, file); exit(4); } convert(name) char *name; { FILE *df, *uf, *ind; char line[60]; int lad, lod, inxct, istrt, irec, lsn, irnk, nop; int ladg, lam, las, lodg, lom, los, ipn, i; float alt, aln, altmn, altmx, alnmn, alnmx; if (!(df = fopen(name, "r"))) { perror(name); return; } strcpy(line, name); strcpy(index(line, '.'), ".unf"); uf = fopen(line, "w"); strcpy(index(line, '.'), ".ind"); ind = fopen(line, "w"); istrt = 1; while (fgets(line, 60, df)) { sscanf(line, "%7d%2d%6d", &lsn, &irnk, &nop); for (i = 1; i <= nop; i++) { fgets(line, 60, df); sscanf(line, "%2d%2d%2d%c%3d%2d%2d%c%5d", &ladg, &lam, &las, &lad, &lodg, &lom, &los, &lod, &ipn); alt = ladg + lam/60.0 + las/3600.0; if (lad == 'S') alt = - alt; aln = lodg + lom/60.0 + los/3600.0; if (lod == 'W') aln = - aln; irec++; fwrite(&alt, sizeof alt, 1, uf); fwrite(&aln, sizeof aln, 1, uf); if (i <= 1) { altmx = altmn = alt; alnmx = alnmn = aln; } else { if (alt < altmn) altmn = alt; if (alt > altmx) altmx = alt; if (aln < alnmn) alnmn = aln; if (aln > alnmx) alnmx = aln; } } } fclose(df); fclose(uf); fclose(ind); }