Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας συμφορουμιτες . Εχω φαει το κεφαλι μου εδω και 2 μερες και ακρη δεν βγαζω. Εχω το εξης struct:

typedef struct
{
    char eng[30];//μια αγγλικη λεξη
    char gr[30];//μια ελληνικη λεξη
} oros;

και επειτα δημιουργω εναν πινακα:

oros index[10000];
int index_size;//το χρησιμοποιουμενο μερος του πινακα 

Το θεμα ειναι οτι επειδη φτιαχνω κατι σαν ενα μικρο λεξικο, θελω να μπορεσω να ταξινομισω τα στοιχεια(oros) του πινακα lex με βαση την μεταβλητη char gr[30] τους. Πως θα μπορεσει να γινει κατι τετοιο?
Προσπαθω να κανω χρηση της qsort() αλλα τα βρισκω σκουρα στο καλεσμα της.

 

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

 

Αυτος ειναι ο ορισμος της. Πως μπορω να την καλεσω εγω ?
 

Εχω σκεφτει κατι τετοιο : qsort(index, index_size, sizeof(oros), strcmp);

 

Ευχαριστω προκαταβολικα :)

Δημοσ.

Φτιαχνεις μια compar(const void *, const void*)  που επιστρέφει 1,-1, ή 0.

Βασικα καλει την strcmp(char*, char*).

int compar( const void* arg1, const void* arg2 )
{
  oros* o1= (oros*) arg1;
  oros* o2= (oros*) arg2;
  return strcmp(o1->eng, o2->eng);
}
Δημοσ.

 

Φτιαχνεις μια compar(const void *, const void*)  που επιστρέφει 1,-1, ή 0.

Βασικα καλει την strcmp(char*, char*).

int compar( const void* arg1, const void* arg2 )
{
  oros* o1= (oros*) arg1;
  oros* o2= (oros*) arg2;
  return strcmp(o1->eng, o2->eng);
}

 

Σε ευχαριστω:) Eπειτα η κληση της qsort θα γραφτει με τον τροπο που εγραψα παραπανω και απλα η compar θα μπει ως τελευταια παραμετρος ?

Δηλαδη :

qsort(index, index_size, sizeof(oros), compar);

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...