Formatierten Text in C drucken

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Funktion printf mit dem Spezifizierer %s, um Zeichenketten zu drucken
  2. Verwenden Sie die Funktion printf mit dem Spezifizierer %i, um ganze Zahlen auszugeben
Formatierten Text in C drucken

In diesem Artikel werden verschiedene Methoden vorgestellt, wie man in C formatierten Text auf der Konsole ausgeben kann.

Verwenden Sie die Funktion printf mit dem Spezifizierer %s, um Zeichenketten zu drucken

Die Funktion printf ist einer der am meisten genutzten Teile der Standard-Ein-/Ausgabebibliothek. Tatsächlich gibt es eine ganze Familie von printf-Funktionen, die für verschiedene Szenarien spezialisiert sind, und die alle auf dieser Seite ausführlich dokumentiert sind. In diesem Artikel demonstrieren wir nur die formatierte Ausgabe mit der Funktion printf.

Das Besondere an printf ist, dass es eine variable Anzahl von Argumenten annehmen kann. Die Funktionsparameter können nämlich in zwei Teile unterteilt werden, die Formatzeichenkette und andere Argumente. Die Formatzeichenkette gibt den Formatierungsteil der Funktion an und enthält gewöhnliche Zeichen und Spezifizierer, die mit dem Symbol % beginnen. Die einfachsten Formen werden im folgenden Beispiel demonstriert, wobei printf im ersten Aufruf die Zeichenkette selbst als einziges Argument nimmt und der zweite Aufruf einen einzelnen %s-Spezifizierer in der Formatzeichenkette deklariert, gefolgt von dem Argument der Zeichenkettenvariablen.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  const char* str1 = "fabulae mirabiles";

  printf("String literal\n");
  printf("%s\n", str1);

  exit(EXIT_SUCCESS);
}

Ausgabe:

String literal
fabulae mirabiles

Eine weitere nützliche Funktion der Formatzeichenkette ist die Angabe, wie viele Zeichen aus dem String-Argument, das an die Funktion übergeben wird, ausgegeben werden sollen. Der nächste Beispielcode demonstriert zwei Lösungen für dieses Problem.

Die erste setzt die Ganzzahl, die die Anzahl der Zeichen angibt, zwischen die Symbole % und s; so werden nur 6 Zeichen aus dem gegebenen String-Argument ausgegeben. Der zweite printf-Aufruf setzt stattdessen das *-Zeichen und lässt den Benutzer den ganzzahligen Wert aus einem der Argumente übergeben. Der Vorteil der letzteren Methode ist, dass der Wert zur Laufzeit berechnet werden kann, während bei der ersten Methode der Wert hart kodiert werden muss. Beachten Sie, dass in beiden Fällen das . nach dem %-Symbol notwendig ist.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  const char* str1 = "fabulae mirabiles";

  printf("%.6s\n", str1);
  printf("%.*s \n", 6, str1);

  exit(EXIT_SUCCESS);
}

Ausgabe:

fabula
fabula

Verwenden Sie die Funktion printf mit dem Spezifizierer %i, um ganze Zahlen auszugeben

Die Funktion printf kann ganze Zahlen in verschiedenen Darstellungen ausgeben. Zu den üblichen Methoden gehört das Ändern der Basis, in der die Ganzzahlen dargestellt werden. Ganzzahlige Argumente können mit dem Spezifizierer %i oder %d angegeben werden. Die positiven und negativen Zahlen werden automatisch formatiert, mit der Ausnahme, dass positive Zahlen nicht mit dem Pluszeichen angezeigt werden und dieses mit dem expliziten Spezifizierer %+i eingefügt werden kann. Hexadezimale und oktale Zahlen können mit den Spezifizierern %x und %o entsprechend ausgegeben werden. Der Spezifizierer %X gibt hexadezimale Zahlen mit Großbuchstabenformatierung aus.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  printf("%i %d %.6i %+i %i\n", 11, 22, 12, 41, -31);
  printf("%.4x %x %X %#x\n", 126, 125, 125, 100);
  printf("%.4o %o\n", 8, 11);

  exit(EXIT_SUCCESS);
}

Ausgabe:

11 22 000012 +41 -31
007e 7d 7D 0x64
0010 13
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C IO