Witajcie, mam problem z sortowaniem tablicy wskaźników funkcją qsort.
Zadaniem tej funkcji jest posortowanie wyrazów w łańcuchu (każdy kolejny wyraz oddzielony spacją).
W funkcji wpisuję ten łańcuch do tablicy dwuwymiarowej (wyraz po wyrazie). Następnie chcę ją posortować i tu mam problem, ponieważ nie działa to tak jak powinno.
Kod:
int porownanie(const void *a, const void *b)
{
int wynik;
char *_a = (char*)a;
char *_b = (char*)b;
wynik = strcmp(_a, _b);
return wynik;
}
Tekst* sortuj(Tekst *mt)
{
char **bufor;
int i, j, k;
j = 0;
k = 0;
int licznik = 1;
bufor = (char**)malloc((mt->lw) * sizeof(char*));
bufor[0] = (char*)malloc(25 * sizeof(char));
while ((mt->t[j]) != ' ')
{
bufor[0][j] = (mt->t[j]);
j++;
bufor[0][j] = '\0';
}
for (i = 0; i < (mt->r); i++)
{
if ((mt->t[i]) == ' ')
{
bufor[licznik] = (char*)malloc(25 * sizeof(char));
j = 0;
k = i + 1;
while ((mt->t[k]) != ' ')
{
bufor[licznik][j] = (mt->t[k]);
k++;
j++;
bufor[licznik][j] = '\0';
}
licznik++;
}
}
qsort(bufor, (mt->lw), (sizeof(char*)), porownanie);
}