PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Spaltenausgabe auf Terminal



herr.jth
16-02-2008, 21:38
Hallo,
ich schreibe z.Z. einen kleinen ls-Klon in C und eine Sache die mir wirklich Probleme bereitet ist die Ausgabe in passender Spaltenbreite auf dem Terminal. Bisher gebe ich die Einträge einfach untereinander aus, was natürlich bei größeren Verzeichnissen nicht so schön ist.

Meine Probleme bisher:
1) Ich muss feststellen ob ein Dateiname evt. zu breit für eine vorgesehene Spalte ist.
2) Das Programm weiss nicht welcher Eintrag letztendlich in welche Spalte kommt, was natürlich wieder ein Problem für Punkt 1 ist.
3) Was passiert wenn man am Ende feststellt dass irgendwo am Ende ein ellenlanger Eintrag vorhanden ist und das gesamte, vorher bestimmte Layout nichtmehr passt?

Ich bin ziemlich ratlos wie ich überhaupt an dieses Problem herangehen soll. Bisher habe ich lediglich eine Funktion printTable begonnen, die folgende Daten vorliegen hat:
Breite des Terminals
Char*-Array in dem sortiert jeder Eintrag des Verzeichnisses liegt
Anzahl der Einträge im Verzeichnis

Was mir jetzt helfen würde wären Tipps für eine generelle Vorgehensweise, vielleicht hat der ein oder andere Erfahrung mit ähnlich gelagerten Problemen. Ich habe zwar schon einen Blick in das ls aus den gnu coreutils geworfen, aber so wirklich schlau werde ich dadraus auch nicht und den Code zu kopieren würde mich auch nicht weiter bringen.

Ich hoffe jemand hat ein paar Tipps für mich. Danke schonmal im vorraus.

Mfg

herr.jth
17-02-2008, 11:21
Nachtrag: Das Problem hat sich so halb gelöst. Ich habe jetzt erstmal den Algorithmus aus embutils genommen und jetzt auch einen groben Überblick wie das funktioniert. Ich schaue mir das bei Gelegenheit nochmal genauer an.