Funktion zum zentrieren von Text
-
Hallo, ich hab' ein kleines Problem, bei dem mir hier vielleicht jemand helfen kann:
Ich möchte aus einer Datei verschiedene Texte-teile (Name, Straße, ort) auslesen und im Terminal untereinander ausgeben.
Der Text soll aber zentriert sein und einen Rahmen (aus *-Zeichen)haben.Bsp:
*********************
*____Horst Schmidt____*
*____Hauptstraße 4____*
*_____30400 Stadt____*
*********************Der Rahmen muss sich nach dem längstem Textteil richten, d.h. wenn die Straße mehr Zeichen als der Name hat, gelten auch für den Namen die "Straßen-Daten".
Ich hoffe, ihr wisst, wie ich meine.
Mit strlen sollte sich das irgendwie machen, aber ich schaff's nicht, die fertige Funktion zu basteln.
Wäre schön, wenn mir jemand helfen könnte.
-
Wenn der Rahmen 20 Zeichen lang sein soll, und der Text 12 Zeichen ist, dann müssen rechts und links (20-12)/2 = 4 Leerzeichen sein.
Maximale Textlänge bestmmen,
1. Rahmenzeile ausgeben,
linken Rahmen ausgeben, Leerzeichen berechnen und ausgeben, Text ausgeben, nochmal Leerzeichen berechnen und ausgeben, rechten Rahmen ausgeben,
Wiederholen für jede Textzeile, Letzte Rahmenzeile ausgeben.
-
Für die Bestimmung der maximalen Länge musst zu zunächst nur hierfür die ganze Datei zulesen und die Länge bestimmen (oder alle Worte aufsammeln und dann jeweils bei Bedarf auswerten).
Dann schreibst du dir für jede Funktionalität eine Funktion, die die nötigen Parameter erhält, die sie für die Arbeit benötigt, also z.B.Schleife ... printf("*%s%s%s*\n", berechneLinks(stringwert,maxLaenge), stringwert, berechneRechts(stringwert,maxLaenge) ); Schleifeende
Anfangen tust du, indem du erstmal die Funktionen ohne Funktionalität implementierst, hierbei also zunächst mal "" zurückgibst. Dann erstelle dir einen Testfall mit entsprechenden Daten und fängst an, die fehlenden Funktionalitäten zu implementieren.