Sortierung alphabetisch in C unter Verwendung von strcmp

Ich versuche zu Sortieren, records (Strukturen), die durch Ihre Namen. Und ich bin mit strcmp zu tauschen, zu erkennen der alphabetischen Reihenfolge. Das tauschen funktioniert, aber nicht immer Sortieren der gesamten Liste. Es gibt immer einige Datensätze in der thier falsche alphabetische Reihenfolge.

void sort_by_name(){
    printf("%d\n", counter);

    int i=0, j=0;
    patient *temp;

    for(;j<=counter;j++){
        for(;i<counter-1;i++){

            if(strcmp(pRecords[i]->name, pRecords[i+1]->name) > 0){

                temp = pRecords[i];
                pRecords[i] = pRecords[i+1];
                pRecords[i+1]=temp;

            }//if loops

        }//2nd for loop

    }//1st for loop

}


counter-- number of records in the system.
Haben Sie versucht, schrittweise durch den code in einem debugger auf einem kleinen Datensatz? Haben Sie versucht, indem Sie einige printf-Anweisungen zur Anzeige der Werte mit zwischenwerten? Könnten Sie ein Beispiel geben, dataset, das fehlschlägt?
FYI, werden Sie wahrscheinlich wollen, "strcoll" für Alphabetisierung begründet, da die "strcmp" nur vergleicht bytes und nicht verstehen alphabetischer Reihenfolge. Siehe: pubs.opengroup.org/onlinepubs/009695399/functions/strcoll.html

InformationsquelleAutor smooth_smoothie | 2011-07-08

Schreibe einen Kommentar