#include #include main(int argc, char *argv[]) { float latWanted, lonWanted; FILE *fp; if (argc != 4) { printf("%s: lat lon dir\n", *argv); return 1; } sscanf(*++argv, "%f", &latWanted); --argc; sscanf(*++argv, "%f", &lonWanted); --argc; //printf ("(latWanted, lonWanted) = (%f, %f)\n", latWanted, lonWanted); while (--argc > 0) { //printf ("%d files left to process...\n", argc); fp = fopen(*++argv, "rd"); //printf("reading from %s\n", *argv); if (fp == NULL) { printf("distanceToTrack: can't open %s\n", *argv); return 1; } else { char buf[1024]; float time, lat, lon, l2, gt, gs, pt, gf, tt, tc, mt, ma, mm, carter; int flag; float distanceSqr, minDist; float myTime = -1, myLat = -1, myLon = -1; fgets(buf, 1024, fp); //printf("line #1: %s", buf); fgets(buf, 1024, fp); //printf("line #2: %s", buf); minDist = 1000*1000*1000.; while (fgets(buf, 1024, fp) != NULL) { //printf("%s", buf); sscanf(buf, "%f %f %f", &time, &lat, &lon); distanceSqr = (latWanted - lat) * (latWanted - lat); distanceSqr+= (lonWanted - lon) * (lonWanted - lon); //printf("%f \t%s:\t(time, lat, lon) = (%10.0f, %10.4f, %10.4f)\n", (distanceSqr), *argv, time, lat, lon); if (distanceSqr < minDist) { myTime= time; myLat = lat; myLon = lon; minDist = distanceSqr; // printf("**%f \t%s:\t(time, lat, lon) = (%10.0f, %10.4f, %10.4f)\n", sqrt(minDist), *argv, time, lat, lon); // printf("**%f \t%s:\t(time, lat, lon) = (%10.0f, %10.4f, %10.4f)\n", (minDist), *argv, time, lat, lon); } } printf("%f \t%s:\t(time, lat, lon) = (%10.0f, %10.4f, %10.4f)\n", sqrt(minDist), *argv, myTime, myLat, myLon); } } }