Rechteck mit C programmieren?
Hat mir jemand einen Code, wie ich das mit der Programmiersprache in C programmieren kann?
3 Antworten
Könntest Du mit printf machen.
bisschen kann ich schon aber bin nicht die beste
ich danke dir. Wie kann ich aber den Text in der Mitte schreiben?
Mir ist immer noch langweilig :)
#include <stdio.h>
#include <string.h>
/* Textzeilen in einem Rechteck ausgeben.
lines enthält die einzelnen Zeilen und endet mit NULL.
*/
static void printRect ( char const * const * lines )
{
/* maximale Zeilenlänge (für die Breite der Box): */
int width = 0;
for ( char const * const * line=lines; *line; ++line )
if (width<strlen(*line) )
width=strlen(*line);
/* 1. Oberkante ("╔════════···═══════╗"): */
printf("╔═");
for ( int i=0; i<width; ++i )
printf("═");
printf("═╗\n");
/* 2. Textzeilen ("║ bla bla blubber ║")
mit Leerzeile davor und danach: */
printf("║ %-*s ║\n", width, "");
for ( char const * const * line=lines; *line; ++line )
printf("║ %-*s ║\n", width, *line);
printf("║ %-*s ║\n", width, "");
/* 3. Unterkante ("╚═══════···═══════╝"): */
printf("╚═");
for ( int i=0; i<width; ++i )
printf("═");
printf("═╝\n");
}
/* Alle Zeilen von der Kommandozeile ausgeben: */
int main( int argc, char const * const * argv )
{
printRect(argv+1);
return 0;
}
Das einzig besondere dabei ist die printf-Formatierung "%-*s":
Das Minus gibt den Text linksbündig aus, und das Sternchen sagt, dass die Mindestbreite der Ausgabe als Argument (hier: width) übergeben wird. Damit sparst Du Dir den Aufwand, hinter den einzelnen Zeilen noch so viele Leerzeichen auszugeben, bis die volle Boxbreite erreicht ist.
Der performanteste Weg wäre den String einfach zu hardcoden und auszugeben.
Ich kann die ASCII Tabelle nutzen ich weiß trotzdem leider nicht wie das geht
Wie genau?