1

文字列のサフィックスを 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

問題は、ソートされていないリストを取得していることです。

4

1 に答える 1

3

このcompare関数は、配列内の項目へのポインターを受け取ります。ここの配列項目は へcharのポインタであるため、受け取るのは へのポインタへのポインタcharです。

int compare(const void* p, const void* q)
{
     char **a= (char**)p;
     char **b= (char**)q;

    return strcmp(*a,*b);
}
于 2013-10-03T11:36:08.023 に答える