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 >
Wrap
Text File
|
1993-02-05
|
968b
|
44 lines
/* index3.c: Print unique tokens from standard input */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXWIDTH 32
#define MAXTOKENS 1024
static int comp(const void *, const void *);
static char tokens[MAXTOKENS][MAXWIDTH];
main()
{
size_t i, n;
size_t idx[MAXTOKENS];
char *last;
char *format = "%*[^A-Za-z0-9]%[A-Za-z0-9]";
/* Read tokens & initialize index array */
for (n = 0; n < MAXTOKENS &&
scanf(format,tokens[n]) != EOF; ++n)
idx[n] = n;
qsort(idx,n,sizeof(idx[0]),comp);
/* Output only unique tokens */
puts((last = tokens[idx[0]]));
for (i = 1; i < n; ++i)
if (strcmp(tokens[idx[i]],last) != 0)
puts((last = tokens[idx[i]]));
return 0;
}
static int comp(const void *p1, const void *p2)
{
size_t i = * (size_t *) p1;
size_t j = * (size_t *) p2;
return strcmp(tokens[i],tokens[j]);
}