/************************************************************************************ * * * Program - rd_ax_hydr0.c * * * * AUTHOR: Mandira Mukherjee * * * * Date: 10/14/94 * * * *PURPOSE/DESCRIPTION: * * The goals of ASTEX were pursued by combining measurements * * from aircraft, satellites, ships and islands. Surface based * * measurements were made from the island of Santa Maria (in * * the Azores) and Porto Santo (near Madeira) and four research* * vessels- NOAA's Oceanus and Malcolm Baldrige, the German Ship* * Valdivia and the French Ship Le Suroit. Soundings were made * * from Le Suroit and Oceanus. * * * * The above directory has two datafiles * * and the suroitnav.dat datafile. The parameters of the former * * granule are derived from spectral ambient noise at 19 kHz * * Underwater sound has been measured by a hydrophone hanging * * to a small buoy, at a few kilometers from the ship Le Suroit * * during June 1992. * * * ************************************************************************************/ #include #include #include #include #include #include #include #include #define RECSIZE 80 #define PARAMS 5 main (argc,argv) int argc; char *argv[]; { void Print_heading(); /* prints the heading of the data set */ void Get_par_type(); /* displays the choice of parameters */ char *trim(); /* removes leading and trailing blanks from input lines */ char filename1[MAXPATHLEN+1]; /* name of the file as first argv */ char buf[256]; /* buffer to read strings at a time */ char par_type[10],tmp[10]; /* storage for requested parameter */ FILE *fptr; /* file pointer */ int i,rec_count,count, /* counters */ param[PARAMS], /* array of requested parameters */ day,hour; double col4,col5; int col1,col2,col3; /* variables 1 thru 5 */ /*********************************************************************************/ void Print_heading(); for (count = 0;count < PARAMS; count++) { param[count] = -99; } if (argc == 1) { printf("Please enter the datafile name: "); scanf("%s",filename1); } else { strcpy (filename1,argv[1]); } printf ("\n\n"); printf("The datafile to be read is %s \n", filename1); Get_par_type(tmp,par_type,count,param); /***************************Read dataset and print the required Heading*****************/ count = 0; /*Print header of requested Parameters*/ for ( count =1; count <= PARAMS;count++) { switch (param[count - 1]) { case 0: printf(" DAY "); break; case 1: printf (" HOUR "); break; case 2: printf(" Minutes "); break; case 3: printf(" Mean Spacing(m) "); break; case 4: printf(" Wind Speed(m/s) "); break; default: break; } /* end of case statement */ } /* end of for loop */ printf("\n"); /******************************************************************/ if ((fptr = fopen(filename1,"r"))==NULL) { printf("***************************************************\n"); printf("ERROR-UNABLE TO OPEN DATA FILE. PROGRAM HAS TERMINATED\n"); printf("******************************************************\n"); exit(-1); } rec_count = 0; for (i =0;i<7;i++) { fgets(buf,80,fptr); trim(buf); } while ((feof(fptr)) ==0) { col1 = 0; col2 = 0; col3 = 0; col4 = 0.0; col5 = 0.0; fgets(buf,80,fptr); trim(buf); sscanf(buf,"%d%d%d%lf%lf",&col1,&col2,&col3,&col4,&col5); /*printf("%d %d %d %.3lf %.3lf \n",col1,col2,col3,col4,col5); printf("\n");*/ if ((feof(fptr)!=0)|| (col1 == 0)) { printf("\n\n\n"); printf("----------------------------------------------------\n"); printf("*THE END OF FILE HAS BEEN REACHED........ \n"); printf(" THIS IS A NORMAL TERMINATION........... \n"); printf(" THE TOTAL NUMBER OF RECORDS: %d\n", rec_count); printf("-----------------------------------------------------\n"); exit(0); } ++rec_count; for ( count = 1; count <= PARAMS; count++) { switch (param[count -1]) { case 0: printf(" %d ",col1); break; case 1: printf (" %d",col2); break; case 2: printf (" %d",col3); break; case 3: printf (" %.3lf", col4); break; case 4: printf (" %.3lf",col5); break; } /* End of Switch */ } /*End of for */ printf ("\n"); } /* End of while */ fclose(fptr); } /* End of main */ /******************************************************************************** * * * FILE: Print_heading * * * * AUTHOR: Mandira Mukherjee * * * * PURPOSE/DESCRIPTION: Prints the heading for the FIRE_ASTEX_NAT_SOFIA program. * * * * INVOCATION: * * (void) Print_heading() * * * * INTERNAL ROUTINES: * * NONE. * * * * EXTERNAL ROUTINES: * * NONE * * * *********************************************************************************/ void Print_heading() { printf("\n\n"); printf("***********************************************************\n"); printf("* *\n"); printf("* FIRE_ASTEX_NAT_SOFIA_HYDROPHONE *\n"); printf("* Read Program *\n"); printf("* *\n"); printf("* Version 1.00 September 30, 1994 *\n"); printf("* *\n"); printf("***********************************************************\n"); printf("\n"); } /* End of Printing */ /********************************************************************************* * * * FILE: Get_par_type * * * * AUTHOR: Mandira Mukherjee. * * * * PURPOSE/DESCRIPTION: * * There are 5 parameters in FIRE_ASTEX_NAT_SOFIA_HYDROPHONE * * dataset.They are Day, hour,minutes, mean spacing in meters * * Wind speed in m/s . * * * * INVOCATION: * * (void) Get_par_type * * * * INTERNALROUTINES: * * NONE: * *********************************************************************************/ void Get_par_type(tmp,par_type,count,param) int count,param[10]; char *par_type,*tmp; { int pe; printf("\n"); printf("Five parameters of information were \n"); printf("collected at each event. These parameters are: \n"); printf("\n"); printf(" NO. Parameter Units \n"); printf(" ----- ----------- ----- \n"); printf(" 1. Day day \n"); printf(" 2. Hour time/hour \n"); printf(" 3. Minute time/min \n"); printf(" 4. Mean spacing m \n"); printf(" 5. Wind speed m/s \n"); printf("\n\n"); par_type[0]= 'q'; while ((par_type[0]!='a') && (par_type[0] != 'A') && (par_type[0] != 's') && (par_type[0]!= 'S') && (par_type[0] != 'X') && (par_type[0] != 'x')) { printf(" Please indicate the number of parameters to be printed \n"); printf(" Please select: a or A for ALL parameters\n"); printf(" S or s for some and X or x to exit the program\n\n\n"); scanf("%s",par_type); strcpy(tmp,par_type); } if ((strcmp(par_type,"a")== 0) || (strcmp(par_type,"A")== 0)) { for (count =0; count <= PARAMS; count++) param[count]= count; } else if ((strcmp(par_type, "s")== 0) || (strcmp(par_type,"S")== 0)) { printf ("**********Parameters selection Requested*************\n"); for (count =1; count <= PARAMS;count++) { printf("Enter q to end selection or X to exit program\n"); printf("Please enter parameter #%d-------->",count); scanf("%s",par_type); printf("%s\n",par_type); strcpy(tmp,par_type); if ((strcmp(par_type,"X")==0) || (strcmp(par_type,"x")== 0)) { printf ("\n\n"); printf("*******EXIT PROGRAM***********\n"); exit(-1); } if(((strcmp(par_type,"q")== 0) || (strcmp(par_type,"Q")== 0))&& (count == 1)) { printf("**********NO SELECTION OF PARAMETERS**********\n"); printf("*********EXIT PROGRAM*************************\n"); exit(-1); } if ((strcmp(par_type,"q")== 0) || (strcmp(par_type,"Q")== 0)) { break; } if ((atoi(tmp) > PARAMS) || (atoi(tmp) <= 0)) { printf("\n"); printf(" THE TOTAL PARAMETERS AVAILABLE ARE 1 THRU 5\n"); printf(" THE REQUESTED PARAMETER IS OUT OF RANGE\n"); strcpy(tmp," "); } pe = atoi(par_type); param[count-1]= pe -1; } /*end of for statement */ } /* end of else if */ else if ((strcmp(par_type,"x")== 0) || (strcmp(par_type,"X")== 0)) { printf ("\n\n"); printf("****************EXIT PROGAM*****************\n"); exit(0); } } /* end of the get_type function */ /********************************************************************************* NAME : trim PURPOSE : remove leading and trailing blanks from input line METHOD : walk backwards across the line until a non-space is reached. When finished, place a null terminator after the current character. Then walk forward across the string until an alphanumeric is found. strcpy starting from the first alphanumeric into the first location in the string. INPUT : char * string :: line to trim OUTPUT : char * string :: ling modified to contain no trailing blanks. *NOTE: the input line is modified by this routine DATE : 3/7/1995 *******************************************************************************/ char *trim( string ) char *string; { int i; if ( string[0]!='\0' ) for ( i=strlen(string)-1;((!ispunct(string[i]))&&(!isalnum(string[i]))&&(i!=0)); i-- ) if ((ispunct(string[i-1]))||(isalnum(string[i-1]))) string[i]='\0'; for (i=0;((i