2D String-Array nach best. Spalte sortieren
-
Hallo allerseits!
Ich bin noch totaler C-Anfänger, also seid bitte gnädig! Ich habe folgendes Problem, dass mich wahnsinnig macht:Ich soll ein string-Array mit Bubblesort anhand eines auf der Kommandozeile eingegebenen Spaltenwerts sortieren.
Das Array sieht z. B. so aus(kommt aus ner CSV-Datei):Name Vorname Geb.-Datum Straße Ort
Meier Hans 30.04.1987 Priesterweg 5 Berlin
Schmidt Mike 05.06.1966 Mauerstr. 10 Hannover
Herne Johanna 10.01.1978 Saubergasse 13 HamburgWenn man jetzt z.B. die 0 eingibt, soll also die Tabelle nach den Nachnamen sortiert werden, sodass am Ende da steht
Name Vorname Geb.-Datum Straße Ort
Herne Johanna 10.01.1978 Saubergasse 13 Hamburg
Meier Hans 30.04.1987 Priesterweg 5 Berlin
Schmidt Mike 05.06.1966 Mauerstr. 10 HannoverAlso die Spaltenüberschriften sollen natürlich stehen bleiben.
Ich weiß nicht mehr weiter, ich habs mit einer rückwärts und einer vorwärts laufenden for-Schleife probiert, aber es funktioniert nicht richtig!
Also bis jetzt sieht das Ganze so aus:
(Für die temps kann man bestimmt auch for benutzen, aber ich weiß nicht wie...)for(i=anzahl_zeilen;i>=0;i--) for(zeile=2;zeile<=anzahl_zeilen;zeile++) { if(strcmp(tabelle[zeile][k],tabelle[zeile-1][k])<0) { strncpy(temp1,tabelle[zeile][0],21); strncpy(temp2,tabelle[zeile][1],21); strncpy(temp3,tabelle[zeile][2],21); strncpy(temp4,tabelle[zeile][3],21); strncpy(temp5,tabelle[zeile][4],21); for(x=0;x<MAX_SP_ZAHL;x++){ strncpy(tabelle[zeile][x],tabelle[zeile-1][x],21); } strcpy(tabelle[zeile-1][0],temp1); strcpy(tabelle[zeile-1][1],temp2); strcpy(tabelle[zeile-1][2],temp3); strcpy(tabelle[zeile-1][3],temp4); strcpy(tabelle[zeile-1][4],temp5); } }
k ist die eingegebene Spalte.
Es kommt aber Blödsinn raus: Die Zeile, die ganz nach unten gehört, wird einfach verschluckt, unter der Überschriftenzeile steht ne Leerzeile und für [1] und [3] funktioniert es überhaupt nicht.Hilfe!
-
Hi there!
Mein Lösungsvorschlag wäre folgender:
- Lege dir eine passende Struktur an für alle Elemente aus der Zeile.
- Lese weilenzeise aus der Datei heraus.
- Benutze strtok um die einzelnen Zeichenketten abzuspalten,
die dann in der Struktur gespeichert werden. - Sortiere nun einfach mit Hilfe der Struktur.
Zeh Mau