Frage

Wie kann ich Pad eine Zeichenfolge mit Leerzeichen auf der linken Seite, wenn printf?

Zum Beispiel möchte ich „Hallo“ mit 40 Stellplätzen vorhergehenden es drucken.

Auch die Zeichenfolge I besteht aus mehreren Zeilen drucken möchten. Muss ich jede Zeile einzeln drucken?

EDIT:. Nur um klar zu sein, ich will genau 40 Räume vor jeder Zeile gedruckt

War es hilfreich?

Lösung

Wenn Sie das Wort „Hallo“ zu drucken, in einer Spalte mögen, die 40 Zeichen breit ist, mit Leerzeichen der linken Klotzen, verwenden Sie die folgende.

char *ptr = "Hello";
printf("%40s\n", ptr);

Das gibt Ihnen 35 Räume, dann das Wort „Hallo“. Dies ist, wie man Sachen Format, wenn Sie wissen, wie weit Sie die Spalte wollen, aber die Datenänderungen (na ja, es ist ein Art und Weise können Sie es tun).

Wenn Sie wissen, Sie wollen genau 40 Räume dann einige Text, speichern nur die 40 Räume in einem konstanten und ausdrucken. Wenn Sie mehrere Zeilen zu drucken, entweder mehr printf Aussagen wie die oben verwenden, oder es in einer Schleife tun, um den Wert von ptr jede Zeit zu ändern.

Andere Tipps

Ich benutze diese Funktion meine Ausgabe einrücken (zum Beispiel einer Baumstruktur zu drucken). Die indent ist die Anzahl der Leerzeichen vor dem String.

void print_with_indent(int indent, char * string)
{
    printf("%*s%s", indent, "", string);
}
int space = 40;
printf("%*s", space, "Hello");

Diese Anweisung wird am Ende der Reihe (Entfernen zusätzliche Leerzeichen so daß die gesamte Zeilenlänge konstant bei 40), um eine Reihe von 40 Zeichen, Druckzeichenfolge reservieren. Gleiches gilt für die Zeichen und Zahlen wie folgt verwendet werden:

printf("%*d", space, 10);
printf("%*c", space, 'x');

Diese Methode einen Parameter mit Leerzeichen zu bestimmen, ist nützlich, wenn eine variable Anzahl von Räumen erforderlich ist. Diese Aussagen werden nach wie vor mit Ganzzahlliterale arbeiten wie folgt:

printf("%*d", 10, 10);
printf("%*c", 20, 'x');
printf("%*s", 30, "Hello");

Hope, das hilft jemand wie ich in Zukunft.

Wenn Sie möchten, genau 40 Leerzeichen vor der Zeichenfolge dann sollten Sie gerade tun:

printf("                                        %s\n", myStr );

Wenn das zu schmutzig ist, können Sie dies tun (aber es wird langsamer sein als manuell die 40 Räume eingeben):     printf("%40s%s", "", myStr );

Wenn Sie die Zeichenfolge wollen 40 in Spalte aufgereiht werden (das heißt, bis zu 39 Räumen verläuft es so, dass die am weitesten rechts stehenden Zeichen in Spalte 40) dies dann tun:     printf("%40s", myStr);

Sie können auch über 40 Räume nach der Zeichenfolge setzen „bis zu“ by doing:     printf("%-40s", myStr);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top