2017-11-08 3 views
-2

So möchte ich wie so meine Ausgänge auszurichten:Align Beginn und Ende der Strings in C

John Smith   Age: 34 Gender: M 
Micheal Smith  Age: 9 Gender: F 

und so weiter

Ich habe ein Array, das die Informationen für dieses und ich Schleife durch sie enthält und drucken Sie die Informationen:

Ich bin fest, wie man es ausrichten, so dass alle Räume gleichmäßig sind.

Dank

+2

http://idownvotedbecau.se/noresearch/ – klutt

+0

[Erstellen einer Tabelle mit printf] (https://stackoverflow.com/q/9206669/995714) –

+0

Gibt es eine maximale Fest mit zu '.name'? – chux

Antwort

3

Wenn Sie im Handbuch für printf suchen() und beachten Sie, dass Sie Dinge wie% -18s und% 2d tun kann - Putting ein Feld Breite und Ausrichtung in der Formatgruppe.

Also würde ich so etwas wie

printf("%-20s Age:%3d Gender: %1s", 
     person[i].name, person[i].age, person[i].gender); 

tun, was für Sie gut ausrichten sollte.

+0

Neugierig zu verwenden '":% 3d "' ohne Leerzeichen und dann '":% 1s "' mit Leerzeichen. Ich würde erwarten "Alter:% 3d Geschlecht:% 2s" oder "Alter:% 2d Geschlecht:% 1s" '. IAC, 3-stellige Alter ist sinnvoll. – chux

+0

@chux: Ich ging mit dem Beispiel, dass das Original-Poster gab, halten die Daten in den gleichen Spalten. Ich fand, dass das Überschreiten eines dreistelligen Alters in die nächste Spalte links das "Kleinste" war. –

+0

Ich bin nicht davon überzeugt, dass '% 1s' Ihnen einen Vorteil bietet, den'% s' nicht hat. Wenn Sie '% .1s' verwendet haben, würden Sie die Ausgabe auf höchstens 1 Zeichen begrenzen, aber 'mindestens ein' Zeichen gibt Ihnen nur dann einen Platz, wenn das Geschlecht eine leere Zeichenfolge ist (also' person [i] .gender [ 0] == '\ 0''), also gibt es vielleicht einen marginalen Vorteil. –

1

printf ermöglicht es Ihnen, Polsterung im Formatbezeichner angeben, die Anzahl der linken padding als Zahl zur Verfügung stellen kann x, so dass Ihr Spezifizierer wie %xs oder rechts Polsterung sieht so mit -x, dass der Planer sieht wie %-xs aus.

In Ihrem Fall können Sie so etwas wie:

printf ("%-20s Age: %5d Gender: %s\n", person[i].name, person[i].age, person[i].gender); 
2

Wenn Sie dem% eine Formatierung hinzufügen, sollten Sie dorthin gelangen. Sie können also etwas wie% 10s und% 5d verwenden. Abhängig von der Anzahl der gewünschten Leerzeichen. Außerdem sollten Sie eine Schriftart mit einem festen Abstand verwenden.

+0

Guter Punkt auf der monospaced Schriftart. –

Verwandte Themen