【发布时间】:2013-10-10 01:59:00
【问题描述】:
我试图通过 qsort() 对字符串的后缀进行排序,但没有得到排序列表。
我该怎么办?
这是我所做的:
char str[MAXN]="banana", *a[MAXN];
for(i=0;i<strlen(str);i++)
a[i]=&str[i]; //a[] points to suffixes starting
qsort(a, n, sizeof(char *), compare);
这是我的 compare() 函数:
int compare(const void* p, const void* q)
{
char *a= (char*)p;
char *b= (char*)q;
return strcmp(a,b);
}
a[i] points to i'th suffix of str = "banana"
a[0]: banana
a[1]: anana
a[2]: nana
a[3]: ana
a[4]: na
a[5]: a
after qsort() i want to get :
a[0]: a
a[1]: ana
a[2]: anana
a[3]: banana
a[4]: na
a[5]: nana
问题是我得到了未排序的列表。
【问题讨论】:
-
n在哪里?是size_t n = strlen(str);吗?
标签: c sorting pointers suffix-array