I tried to sort a struct with qsort()
, by using pointers to the struct objects. But when I try to run the program I get an access violation error thrown. I'm lost.
This is my array:
struct studenten_typ sfeld[] = {
{ 123456, 1273.17, { "Erna", "Schlaukopf" } },
{ 213456, 1273.17, { "Erna", "Meier" } },
{ 423456, 1373.67, { "Emil", "Meier" } },
{ 473456, 1193.17, { "Anton", "Mueller" } },
{ 503456, 1473.17, { "Anna", "Mueller" } },
{ 523456, 1063.17, { "Max", "Muster" } },
{ 573456, 945.17, { "Eva", "Muster" } },
{ 723456, 1123.17, { "Xaver", "Kurz" } },
{ 953456, 1273.17, { "Erna", "Schlaukopf" } },
{ 773456, 1243.17, { "Karl", "Kurz" } }
};
This is my qsort function in main (here is where I get the error)
qsort(&sfeld[0], sfeld_n, sizeof(sfeld), stud_matrnr_aufst_vgl_fkt_ptr);
And here is my comparing function
int stud_matrnr_aufst_vgl_fkt_ptr(const void*v1_ptr, const void*v2_ptr)
{
struct studenten_typ* p1 = (void*)v1_ptr;
struct studenten_typ* p2 = (void*)v2_ptr;
// .... ???
if (p1->matrikel_nr > p2->matrikel_nr)
return 1;
if (p1->matrikel_nr < p2->matrikel_nr)
return -1;
if (p1->matrikel_nr == p2->matrikel_nr)
return 0;
}
And my struct is this:
struct studenten_typ {
/** Matrikelnummer als eindeutiges Kriterium */
int matrikel_nr;
/** Monatsgehalt der DH-Studenten*/
double gehalt;
/** Name. */
struct namens_typ name;
}