Mega Code Archive

 
Categories / C / Development
 

Create suffix array and qsort it

#include <stdio.h> #include <string.h> #include <stdlib.h> 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 < len; i++) strarr[i] = &str[i]; /* print it... */ for(i = 0; i < len; i++) printf("%s\n", strarr[i]); /* qsort the sufx. ptr array */ sortstrarr(strarr, len); printf("--\n"); /* again print it... */ for(i = 0; i < len; 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); }