Create suffix array and qsort it

#include
#include
#include

void sortstrarr(void *array, unsigned n);
static int cmpr(const void *a, const void *b);

int main(int argc, char *argv[]) {
char *strarr[1024];
char *str = NULL;
int i = 0, len = 0;

if(argc == 2) {
str = argv[1];
len = strlen(str);
} else {
fprintf(stderr, "Usage: strsufsort STRING\n");
return 1;
}

/* create suffix pointer array */
for(i = 0; i <>
strarr[i] = &str[i];

/* print it... */
for(i = 0; i <>
printf("%s\n", strarr[i]);

/* qsort the sufx. ptr array */
sortstrarr(strarr, len);
printf("--\n");

/* again print it... */
for(i = 0; i <>
printf("%s\n", strarr[i]);

return 0;
}

static int cmpr(const void *a, const void *b) {
return strcmp(*(char **)a, *(char **)b);
}

void sortstrarr(void *array, unsigned n) {
qsort(array, n, sizeof(char *), cmpr);
}

No comments:

Post a Comment