2016-04-01 12 views
1

den() işlevi qsort Bu ben ilan veri türüdür:Geçme parametreleri <stdlib.h>

struct Element{ 
    char name[21], symbol[4]; 
    double atomicMass; 
    int valence; 
}; 
typedef struct Element myElements; 
myElements data[20]; 

Sadece) (

data[20] 

adını üyeleri Qsort geçmek istiyorsanız, bu nasıl yapılır?

qsort(data->name, 20, sizeof(myElements), compare); 
+0

'Verileri' alfabetik olarak isimlendirmek ister misiniz? –

+0

evet alfabetik olarak. –

+0

"Nasıl yapmalı?" - Bunu yapmıyorsun, ne de istiyorsun. Ne yapmak istediğiniz, verilerinizi isimlere göre sıralamaktır. Eğer gerçekten gerçekten sadece qsort isimlerini geçmek istediyseniz, bunları sadece isimlerden oluşan bir diziye kopyalamanız gerekir. –

cevap

3

sadece üye geçemiyor: Bu işleve geçmek için doğru yolu olurdu

emin değilim. Doğru yol, bir yardımcı kelimeyi 2 öğeyi kendi adlarına göre karşılaştıran ve onu kullanan bir işlevi karşılaştırmaktır.

static int 
cmpElement(const void *p1, const void *p2) 
{ 
    return strcmp(((const Element *) p1)->name, ((const Element *) p2)->name); 
} 

qsort(data, 20, sizeof data[0], cmpElement); 
+0

boyutunda (myElements) yerine sizeof (Öğe) –

+0

@SadmanAhmed Haklısınız. Olmalı. –

+0

@SadmanAhmed Hayır, sizeof (struct Element) veya sizeof (data [0]) doğrudur; sizeof (myElements) çok yanlış. Qsort belgelerini okumayı deneyin. –