void  name2cstr( const char * source, 
                 char       * target,
                 FSTR_L       slen,
                 FSTR_L       tlen ) ;
void  fstr2cstr( const char * source, 
                 char       * target, 
                 FSTR_L       slen, 
                 FSTR_L       tlen ) ;
void  cstr2fstr( const char * source, 
                 char *       target,
                 FSTR_L       tlen ) ;
For Cray version, see include-file iodecl3.h—Cray data structures for Fortran strings are very different!.
fstr2cstr():   Construct a C string
    for a general Fortran string (i.e., one with embedded blanks, like
    description-lines in a file description.
    Truncates if the target-length argument is too short.
    
    name2cstr(): Construct a C string
    for a Fortran "name" string (i.e., one without embedded
    blanks, like variable-names or file-names.
    Truncates if the target-length argument is too short.
    
    cstr2fstr():  Construct a (blank
    padded) Fortran string for a (null terminated) C string.
    Truncates if the target-length argument is too short, pads with
    blanks on the right if the target-length argument is too long.
    
These are most useful for C programmers needing to interact with the Fortran strings for variable names, units, and variable descriptions in file description data structures, since these latter are defined to use blank-padded, fixed-length Fortran-style strings instead of null terminated C strings. Note that generally the C bindings of the I/O API already use these routines internally to convert their arguments from C strings to the Fortran strings needed of their callees.
#include "iodecl3.h" for C.
    
    ...
    #include "iodecl3.h" 
    ... 
    char    varname[ NAMLEN3+1 ] ;
    char    varunit[ NAMLEN3+1 ] ;
    char    vardesc[ MXDLEN3+1 ] ;
    IOAPI_Bdesc3 bdesc;
    IOAPI_Cdesc3 cdesc;
    ... 
    if ( ! desc3c( "INFILE", &bdesc, &cdesc) )  /*   Get information from file header   */
        {
        m3exitc( "TESTREAD", 0,0, "Error getting file description", 1 );
        }
    name2cstr( cdesc.vname[0], varname, (FSTR_L)NAMLEN3, (FSTR_L)(NAMLEN3+1) ) ;
    name2cstr( cdesc.units[0], varunit, (FSTR_L)NAMLEN3, (FSTR_L)(NAMLEN3+1) ) ;
    fstr2cstr( cdesc.vdesc[0], vardesc, (FSTR_L)MXDLEN3, (FSTR_L)(MXDLEN3+1) ) ;
    printf( "First variable \"%s\" (%s): %s", varname, varunit, vardesc ) ;
    ...
    cstr2fstr( "TA", cdesc.vname[0], (FSTR_L)(NAMLEN3) ) ;
    cstr2fstr( "K",  cdesc.units[0], (FSTR_L)(NAMLEN3) ) ;
    cstr2fstr( "air temperature", cdesc.vdesc[0], (FSTR_L)(MXDLEN3) ) ;
    ...
    if ( !open3c( "OUTFILE", & bdesc, & cdesc, FSUNKN3, "MY_PROGRAM" ) )
    ...
To: Models-3/EDSS I/O API: The Help Pages