home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / C / DLIBSSRC.ZIP / STRADJ.C < prev    next >
Encoding:
Text File  |  1987-06-14  |  863 b   |  36 lines

  1. char *stradj(string, dir)
  2. register char *string;
  3. register int dir;
  4. /*
  5.  *    Adjust <string> by adding space if <dir> is positive, or removing
  6.  *    space if <dir> is negative.  The magnitude of <dir> is the number
  7.  *    of character positions to add or remove.  Characters are added or
  8.  *    removed at the beginning of <string>.  A pointer to the modified
  9.  *    <string> is returned.
  10.  */
  11. {
  12.     register char *p = string, *q;
  13.  
  14.     if(dir == 0)
  15.         return(string);
  16.     if(dir > 0) {            /* add space */
  17.         while(*p)            /* find end */
  18.             ++p;
  19.         q = p + dir;            /* set gap */
  20.         while(p >= string)        /* copy data */
  21.             *q-- = *p--;
  22.         while(q >= string) {        /* replace <nul>s */
  23.             if(*q == '\0')
  24.                 *q = ' ';
  25.             --q;
  26.         }
  27.     }
  28.     else {                /* remove space */
  29.         dir = -dir;
  30.         q = p + dir;            /* set gap */
  31.         while(*p++ = *q++)        /* copy data */
  32.             ;
  33.     }
  34.     return(string);
  35. }
  36.