nextwd_c |
Table of contents
Procedurenextwd_c ( Next word in a character string ) void nextwd_c ( ConstSpiceChar * string, SpiceInt nexlen, SpiceInt reslen, SpiceChar * next, SpiceChar * rest ) AbstractReturn the next word in a given character string, and left justify the rest of the string. Required_ReadingNone. KeywordsCHARACTER PARSING WORD Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- string I Input character string. nexlen I Maximum length of output string `next'. reslen I Maximum length of output string `rest'. next O The next word in the string. rest O The remaining part of `string', left-justified. Detailed_Inputstring is a null-terminated string to be parsed. Each word of this string is a maximal sequence of consecutive non-blank, non-null characters. nexlen is the maximum allowed length of the output string `next'. This length must be large enough to hold the output string plus the null-terminator character. If the output string is expected to have M characters, `nexlen' should be at least M+1. reslen is the maximum allowed length of the output string `rest'. This length must be large enough to hold the output string plus the null-terminator character. If the output string is expected to have N characters, `reslen' should be at least N+1. Detailed_Outputnext is the first word in `string'. It is called the "next" word because nextwd_c is typically called repeatedly to find the words of the input string in left-to-right order. A word is a maximal sequence of consecutive non-blank, non-null characters. `next' is always returned left-justified. If `string' is blank or empty, `next' is empty. If the first word in `string' is longer than nexlen-1 characters, it will be truncated on the right. `next' may NOT overwrite `string'. rest is the remaining part of `string', left-justified after the removal of `next'. If `string' is empty, `rest' is empty. If the remaining part of `string' is longer than reslen-1 characters, it will be truncated on the right. `rest' may overwrite `string'. ParametersNone. Exceptions1) If the declared lengths of `next' and `rest' are not large enough to hold the output strings, they are truncated on the right. 2) If the `string' input string pointer is null, the error SPICE(NULLPOINTER) is signaled. 3) If any of the `next' or `rest' output string pointers is null, the error SPICE(NULLPOINTER) is signaled. 4) If any of the `next' or `rest' output strings has length less than two characters, the error SPICE(STRINGTOOSHORT) is signaled, since the output string is too short to contain one character of output data plus a null terminator. FilesNone. Particularsnextwd_c is used primarily for parsing input commands consisting of one or more words, where a word is defined to be any sequence of consecutive non-blank characters. Successive calls to nextwd_c, each using the previous value of `rest' as the input string, allow the calling routine to neatly parse and process one word at a time. nextwd_c cuts the input string into two pieces, and returns them separately. The first piece is the first word in the string. (Leading blanks are ignored. The first word, which is returned in the output argument `next', runs from the first non-blank character in the string up to the first blank that follows it.) The second piece is whatever is left after the first word is removed. The second piece is left justified, to simplify later calls to nextwd_c. ExamplesThe numerical results shown for this example may differ across platforms. The results depend on the SPICE kernels used as input, the compiler and supporting libraries, and the machine specific arithmetic implementation. 1) Given a character string, get the sequence of words within. Example code begins here. /. Program nextwd_ex1 ./ #include <stdio.h> #include <string.h> #include "SpiceUsr.h" int main( ) { /. Local parameters. ./ #define LINZS 48 #define WRDSZ 6 /. Local variables. ./ SpiceChar next [WRDSZ]; SpiceChar rest [LINZS]; SpiceChar string [LINZS]; strncpy( rest, " Now is the time, for all good men to come.", 48 ); printf( "Next Rest of the string\n" ); printf( "----- ------------------------------------------\n" ); while ( ! eqstr_c ( rest, "" ) ) { strncpy( string, rest, LINZS ); nextwd_c ( string, WRDSZ, LINZS, next, rest ); printf( "%-5s %s\n", next, rest ); } return ( 0 ); } When this program was executed on a Mac/Intel/cc/64-bit platform, the output was: Next Rest of the string ----- ------------------------------------------ Now is the time, for all good men to come. is the time, for all good men to come. the time, for all good men to come. time, for all good men to come. for all good men to come. all good men to come. good men to come. men to come. to come. come. RestrictionsNone. Literature_ReferencesNone. Author_and_InstitutionJ. Diaz del Rio (ODC Space) Version-CSPICE Version 1.0.0, 04-AUG-2021 (JDR) Index_Entriesnext word in a character_string |
Fri Dec 31 18:41:10 2021