W programie tworzę tablicę struktur, która potem mam posortować dowolna kolumną.
Elementy wyglądają tak:
int kol1(const void * a, const void * b)
{
Wiersz* arg1 = (Wiersz*) a;
Wiersz* arg2 = (Wiersz*) b;
cout << "Teraz porownam " << arg1->DaneAA << " z " << arg2->DaneAA<<endl;
if( arg1->DaneAA < arg2->DaneAA ) return -1;
else if( arg1->DaneAA == arg2->DaneAA ) return 0;
else return 1;
}
.
.
.
struct Wiersz
{
char DaneAA[64];
char DaneBB[64];
char DaneCC[64];
};
.
.
.
Wiersz *wiersze;
wiersze=(Wiersz *)calloc(ileWierszy,sizeof(Wiersz));
.
.
.
//tablica jest potem rozszerzana w trakcie rozczytywania pliku, ale jest to tutaj raczej mniej istotne
strcpy(wiersze[ileWierszy-2].DaneAA,DaneA);
strcpy(wiersze[ileWierszy-2].DaneBB,DaneB);
strcpy(wiersze[ileWierszy-2].DaneCC,DaneC);
wiersze=(Wiersz *)realloc( wiersze , (ileWierszy) * sizeof(Wiersz) );
.
.
.
//probelm jest w tym że po wywołaniu metody qsort nic się nie zmienia
qsort (wiersze, ileWierszy-2, sizeof(Wiersz), kol1);