home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_11_04 / 1104115a < prev    next >
Text File  |  1993-02-05  |  968b  |  44 lines

  1. /* index3.c: Print unique tokens from standard input */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. #define MAXWIDTH  32
  8. #define MAXTOKENS 1024
  9.  
  10. static int comp(const void *, const void *);
  11.  
  12. static char tokens[MAXTOKENS][MAXWIDTH];
  13.  
  14. main()
  15. {
  16.     size_t i, n;
  17.     size_t idx[MAXTOKENS];
  18.     char *last;
  19.     char *format = "%*[^A-Za-z0-9]%[A-Za-z0-9]";
  20.  
  21.     /* Read tokens & initialize index array */
  22.     for (n = 0; n < MAXTOKENS &&
  23.                 scanf(format,tokens[n]) != EOF; ++n)
  24.         idx[n] = n;
  25.  
  26.     qsort(idx,n,sizeof(idx[0]),comp);
  27.  
  28.     /* Output only unique tokens */
  29.     puts((last = tokens[idx[0]]));
  30.     for (i = 1; i < n; ++i)
  31.         if (strcmp(tokens[idx[i]],last) != 0)
  32.             puts((last = tokens[idx[i]]));
  33.     return 0;
  34. }
  35.  
  36. static int comp(const void *p1, const void *p2)
  37. {
  38.     size_t i = * (size_t *) p1;
  39.     size_t j = * (size_t *) p2;
  40.  
  41.     return strcmp(tokens[i],tokens[j]);
  42. }
  43.  
  44.