#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 < 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);
}
#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 < 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);
}
No comments:
Post a Comment