#include #include #include #include #include #include #include #include char * strxcpy ( char * dest, const char * src, int maxlen); int main( int argc, char * argv[] ) { FILE *fp; char inbuf[256]; char buf[80]; double fra, fdec, tra, tdec, d; int rc, v, inx; char buf_ra[25]; char buf_dec[25]; v = 0; // verbose flag for debugging. printf("opening file %s \n", argv[1]); if( (fp = fopen( argv[1], "r")) == NULL ) { printf("Error: unable to open %s\n", argv[1]); return -1; } while( NULL != fgets( inbuf, sizeof(inbuf), fp)) { if( v ) printf(">> %s \n", inbuf); // convert string to radians; columns are spaced 15 char apart. // data is: fk5_ra fk5_dec tcs3_ra tcs3_dec strxcpy( buf, inbuf, 14); inx = 1; slaDafin( buf, &inx, &fra, &rc); fra *= 15.0; strxcpy( buf, inbuf+15, 14); inx = 1; slaDafin( buf, &inx, &fdec, &rc); strxcpy( buf, inbuf+30, 14); inx = 1; slaDafin( buf, &inx, &tra, &rc); tra *= 15.0; strxcpy( buf, inbuf+45, 14); inx = 1; slaDafin( buf, &inx, &tdec, &rc); printf(" %s %s ", esla_r2tf_str(buf_ra, fra, 2), esla_r2af_str(buf_dec, fdec, 1)); printf(" %s %s ", esla_r2tf_str(buf_ra, tra, 2), esla_r2af_str(buf_dec, tdec, 1)); // display position as radians printf(" %15.12f %15.12f %15.12f %15.12f ", fra, fdec, tra, tdec); // ra & dec error in arcseconds. esla_get_distance( fra, fdec, tra, tdec, TRUE, &d ); printf(" %7.1f %7.1f %7.1f ", (fra-tra)*DR2AS, (fdec-tdec)*DR2AS, d*DR2AS ); printf("\n"); } fclose(fp); return 0; } /*--------------------------------------------------------- ** strxcpy() - similar to strncpy, but will always ** place an null character at the end of dest. **--------------------------------------------------------- */ char * strxcpy ( char * dest, const char * src, int maxlen ) { strncpy( dest, src, maxlen ); dest[maxlen-1] = '\0'; return dest; }