Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.stsci.edu/~sontag/spicedocs/cspice/dafopw_c.html
Дата изменения: Sat Dec 17 06:08:42 2005 Дата индексирования: Sun Apr 10 23:59:08 2016 Кодировка: Поисковые слова: asteroid |
Open a DAF for subsequent write requests.
DAF
Variable I/O Description -------- --- -------------------------------------------------- fname I Name of DAF to be opened. handle O Handle assigned to DAF.
fname is the name of a DAF to be opened with write access.
handle is the file handle associated with the file. This handle is used to identify the file in subsequent calls to other DAF routines.
None.
Most DAFs require only read access. If you do not need to change the contents of a file, you should open it with dafopr_c. Use dafopw_c when you need to -- change (update) one or more summaries, names, or arrays within a file; or -- add new arrays to a file.
In the following code fragment, dafopw_c is used to open a file, which is then searched for arrays containing data for a particular object. The code for the object is then changed (perhaps to reflect some new convention). #include "SpiceUsr.h" #include "SpiceZfc.h" int main() { void dafopw_c ( ConstSpiceChar * fname, SpiceInt * handle ); #define DSCSIZ 5 #define FILSIZ 256 #define LINSIZ 81 #define ND 2 #define NI 6 SpiceBoolean found; SpiceChar fname [ FILSIZ ]; SpiceChar line [ LINSIZ ]; SpiceDouble dc [ ND ]; SpiceDouble sum [ DSCSIZ ]; SpiceInt handle; SpiceInt ic [ NI ]; SpiceInt nd = ND; SpiceInt new_code; SpiceInt ni = NI; SpiceInt old_code; /. Get the file name. ./ prompt_c ( "Enter name of existing DAF > ", FILSIZ, fname ); prompt_c ( "Enter ID code to change > ", LINSIZ, line ); prsint_c ( line, &old_code ); prompt_c ( "Enter replacement code > ", LINSIZ, line ); prsint_c ( line, &new_code ); /. Open the existing DAF file for write access. ./ dafopw_c ( fname, &handle ); /. Start a forward search through the file. ./ dafbfs_c ( handle ); /. Find the first array (segment). ./ daffna_c ( &found ); while ( found ) { /. Read and unpack the current DAF array summary (aka segment descriptor) sum: ./ dafgs_c ( sum ); dafus_c ( sum, nd, ni, dc, ic ); if ( ic[0] == old_code ) { ic[0] = new_code; /. Pack the summary array using the updated integer array ic. Note this is an f2c'd routine, so the array sizes are passed by reference. ./ dafps_ ( &nd, &ni, dc, ic, sum ); /. Replace the segment descriptor in the DAF. ./ dafrs_ ( sum ); } /. Find the next segment. ./ daffna_c ( &found ); } /. Close the DAF. ./ dafcls_c ( handle ); return ( 0 ); }
1) Only files of the native binary file format may be opened with this routine. 2) Files opened using this routine must be closed with dafcls_c.
1) If the specified file has already been opened, either by the DAF routines or by other code, an error is signaled by routines in the call tree of this routine. Note that this response is not paralleled by dafopr_c, which allows you to open a DAF for reading even if it is already open for reading. 2) If the specified file cannot be opened without exceeding the maximum number of files, the error SPICE(DAFFTFULL) is signaled. 3) If the attempt to read the file's file record fails, the error SPICE(FILEREADFAILED) will be signaled. 4) If the specified file is not a DAF file, an error is signaled by routines in the call tree of this routine. 5) If no logical units are available, an error is signaled by routines called by this routine. 6) If the file does not exist, the error SPICE(FILENOTFOUND) is signaled by routines in the call tree of this routine. 7) If an I/O error occurs in the process of opening the file, routines in the call tree of this routine signal an error. 8) If the file name is blank or otherwise inappropriate routines in the call tree of this routine signal an error. 9) If the file was transferred improperly via FTP, routines in the call tree of this routine signal an error. 10) If the file utilizes a non-native binary file format, an error is signaled by routines in the call tree of this routine. 11) The error SPICE(EMPTYSTRING) is signaled if the file namne string does not contain at least one character, since the string cannot be converted to a Fortran-style string in this case. 12) The error SPICE(NULLPOINTER) is signaled if the input file name string pointer is null.
See argument `fname'.
N.J. Bachman (JPL) K.R. Gehringer (JPL) J.M. Lynch (JPL) J.E. McLean (JPL) W.L. Taber (JPL) F.S. Turner (JPL) I.M. Underwood (JPL)
NAIF Document 167.0, "Double Precision Array Files (DAF) Specification and User's Guide"
-CSPICE Version 1.0.0, 13-OCT-2004 (NJB) (KRG) (JML) (JEM) (WLT) (FST) (IMU)
open existing daf for write