home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 7 / POWERCD7.ISO / prgmming / clipper / chareven.c < prev    next >
C/C++ Source or Header  |  1993-10-14  |  2KB  |  72 lines

  1. /*
  2.  * GT CLIPPER STANDARD HEADER
  3.  *
  4.  * File......: chareven.c
  5.  * Author....: Andy M Leighton
  6.  * BBS.......: The Dark Knight Returns
  7.  * Net/Node..: 050/069
  8.  * User Name.: Andy Leighton
  9.  * Date......: 24/05/93
  10.  * Revision..: 1.00
  11.  *
  12.  * This is an original work by Andy Leighton and is placed in the
  13.  * public domain.
  14.  *
  15.  * Modification history:
  16.  * ---------------------
  17.  *
  18.  * $Log$
  19.  *
  20.  */
  21.  
  22. /*
  23.  *  $DOC$
  24.  *  $FUNCNAME$
  25.  *      GT_CHAREVEN()
  26.  *  $CATEGORY$
  27.  *      String
  28.  *  $ONELINER$
  29.  *      Return a string of all the characters in even positions
  30.  *  $SYNTAX$
  31.  *      GT_CharEven(<cStr>) --> cRet
  32.  *  $ARGUMENTS$
  33.  *      <cStr>   - A character string to extract chars from
  34.  *  $RETURNS$
  35.  *      cRet     - A string of all the chars in even positions
  36.  *  $DESCRIPTION$
  37.  *      Return a string consisting of all the characters in even
  38.  *      positions in <cStr1>.
  39.  *
  40.  *      NOTE:
  41.  *         invalid parameters will return ""
  42.  *  $EXAMPLES$
  43.  *
  44.  *      ? gt_CharEven("abcdefghijklm")             // prints "bdfhjl"
  45.  *
  46.  *  $END$
  47.  */
  48.  
  49. #include "extend.h"
  50.  
  51. CLIPPER
  52. charEven()
  53. {
  54.   char *s1, *s2;
  55.   int len, i;
  56.  
  57.   if (ISCHAR(1)) {
  58.     s1  = _parc(1);
  59.     len = _parclen(1);
  60.  
  61.     s2  = _xgrab(len / 2);              // grab us some mem to work with
  62.  
  63.     for (i = 1; i <= len; i += 2)
  64.       s2[(i - 1)/2] = s1[i] & 0x7f;
  65.  
  66.     _retc(s2);
  67.     _xfree(s2);                     // free alloc'ed mem
  68.   } else {
  69.     _retc((char *) NULL);           // parameter mismatch - error NullStr
  70.   }
  71. }
  72.