#include #include #define MAXCHAR 4 void cst_itos( intptr, nval, nchar, str, iret ) int *intptr; int nval; int *nchar; char *str; int *iret; /************************************************************************ * cst_itos * * * * This subroutine decodes an array of integers which contain four * * characters each into a single character string. * * * * cst_itos ( intptr, nval, nchar, str, iret ) * * * * Input parameters: * * *intptr int Pointer to integer values * * nval int Number of integers * * * * Output parameters: * * *nchar int Number of characters * * *str char Character string * * *iret int Return code * * 0 = normal return * * * ** * * Log: * * L. Williams/EAI 5/96 * * S. Jacobs/NCEP 8/96 Updated header format * ***********************************************************************/ { union { int value; char byte[4]; } data; int i, j, k; int clen, index; /*---------------------------------------------------------------------*/ k=0; clen=0; *iret=0; /* * check the number of integers */ if( nval <= 0 ) { *nchar = 0; *str = '\0'; *iret = -1; return; } /* * process each integer */ for( i=0; i < nval; i++ ) { data.value = intptr[i]; index=0; /* * check for NULL */ for( j=0; j < MAXCHAR; j++ ) { if( data.byte[j] == 0 ) index++; else break; } clen = MAXCHAR - index; memcpy( &(str[k]), &(data.byte[index]), clen ); k += clen; } str[strlen(str)] = '\0'; *nchar = MAXCHAR * nval; }