Witam. Mam następujący problem. Mam strukture zadeklarowaną tak:
struct wiersz
{
string kolumna1;
string kolumna2;
string kolumna3;
};
Następnie licze sobie linie w moim pliku, i alokuje dynamicznie pamięć:
wiersz *TabelaSort;
TabelaSort = new wiersz[IloscLinii];
Potem kolejno do TabelaSort[i].kolumna1, TabelaSort[i].kolumna2, TabelaSort[i].kolumna3, wczytuje sobie dane z pliku, i chcę tą tabelę posortować wg wybranej przez usera kolumny. Mam to zrobić funkcją qsort. I tu zaczynają się schody. Na próbę chciałem posortować pierwszą kolumnę.
qsort(TabelaSort.kolumna1, IloscLinii, sizeof(TabelaSort[0].kolumna1), SortujRosnaco);
porównywarka:
int SortujRosnaco(const string * arg1, const string * arg2)
{
return (strcmp(*((char**)arg1),*((char**)arg2)));
}
Kompilator przyczepił się do qsorta a dokładnie TabelaSort.kolumna1. No więc chciałem przekopiować po kolei każdą kolumne do tablicy stringów i to podstawić do qsort. Zrobiłem to tak:
string *kolumna1t=new string[IloscLinii];
for(int i=0; i<IloscLinii; i++)
strcpy(kolumna1t[i], TabelaSort[i].kolumna1);
ale tu również nieznany mi błąd. Co robie źle? Proszę o pomoc.