bongoplayer
05.01.2002, 20:49
Die Deklaration von qsort könnte z.B. so aussehen, wenn ich in einer Struktur person, die ein char name[30], Adresse, Alter usw. hat,
nach dem Namen sortieren mag:
main(){
person * zeig[ANZ];
qsort(zeig,ANZ,sizeof(person),(int(*) (const void *, const void *))comp); //namen mit qsort sortieren
}
Mein Problem hab ich mit der Vergleichsfunktion comp:
//****************************
int comp(person *p1, person *p2){
int res;
res=strcmp(p1->name,p2->name);
if(res==0)
return 0;
if(res<0)
return -1;
else
return 1;
}
//****************************
Warum muss ich die in qsort nicht mindestens mit comp() rufen? Denn wie werden sonst die Parameter person *p1, person *p2 übergeben?
Wenn ich nämlich in der Funktion comp den Wert von p1 mit printf("%s\n", p1->name); ausgeben lasse, kommt irgendein Müll heraus.
Könnt ihr mich da ein bisschen aufklären?
nach dem Namen sortieren mag:
main(){
person * zeig[ANZ];
qsort(zeig,ANZ,sizeof(person),(int(*) (const void *, const void *))comp); //namen mit qsort sortieren
}
Mein Problem hab ich mit der Vergleichsfunktion comp:
//****************************
int comp(person *p1, person *p2){
int res;
res=strcmp(p1->name,p2->name);
if(res==0)
return 0;
if(res<0)
return -1;
else
return 1;
}
//****************************
Warum muss ich die in qsort nicht mindestens mit comp() rufen? Denn wie werden sonst die Parameter person *p1, person *p2 übergeben?
Wenn ich nämlich in der Funktion comp den Wert von p1 mit printf("%s\n", p1->name); ausgeben lasse, kommt irgendein Müll heraus.
Könnt ihr mich da ein bisschen aufklären?