home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / c / string.arc / STRCTRIM.C < prev    next >
C/C++ Source or Header  |  1984-12-31  |  1KB  |  45 lines

  1. /*  File   : strctrim.c
  2.     Author : Richard A. O'Keefe.
  3.     Updated: 20 April 1984
  4.     Defines: strctrim()
  5.  
  6.     strctrim(dst, src, set, ends)
  7.     copies src to dst, but will skip leading characters not in set if
  8.     ends <= 0 and will skip trailing characters not in set if ends >= 0.
  9.     Thus there are three cases:
  10.     ends < 0 :    trim a prefix
  11.     ends = 0 :    trim a prefix and a suffix both
  12.     ends > 0 :    trim a suffix
  13.     This is to strtrim as strcspn is to strspn.
  14. */
  15.  
  16. #include "strings.h"
  17. #include "_str2set.h"
  18.  
  19. char *strctrim(dst, src, set, ends)
  20.     register char *dst, *src;
  21.     char *set;
  22.     int ends;
  23.     {
  24.     _str2set(set);
  25.     if (ends <= 0) {
  26.         register int chr;
  27.         while ((chr = *src++) && _set_vec[chr] != _set_ctr) ;
  28.         --src;
  29.     }
  30.     if (ends >= 0) {
  31.         register int chr;
  32.         register char *save = dst;
  33.         while (chr = *src++) {
  34.         *dst++ = chr;
  35.         if (_set_vec[chr] == _set_ctr) save = dst;
  36.         }
  37.         dst = save, *dst = NUL;
  38.     } else {
  39.         while (*dst++ = *src++) ;
  40.         --dst;
  41.     }
  42.     return dst;
  43.     }
  44.