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);