EAGLE Help

printf()


Funktion
Schreibt formatiere Ausgaben in ein File.

Syntax
int printf(string format[, argument, ...]);

Rückgabewert
Die printf-Funktion liefert die Zahl der Zeichen, die in das vom letzten output-Statement geöffnete File geschrieben wurden.

Wenn ein Fehler auftritt, liefert printf -1.

Siehe auch sprintf, output

Format-String

Der Format-String steuert, wie die Argumente konvertiert, formatiert und ausgegeben werden. Es müssen genau so viele Argumente vorhanden sein, wie für das Format erforderlich sind. Die Zahl und der Typ der Argumente werden für jedes Format geprüft, und wenn sie nicht den Anforderungen entsprechen, wird eine Fehlermeldung ausgegeben.

Der Format-String enthält zwei Objekt-Typen - einfache Zeichen und Format-Specifier:

Format-Specifier

Ein Format-Specifier hat folgende Form:

% [flags] [width] [.prec] type

Jede Format-Spezifizierung beginnt mit dem Prozentzeichen (%). Nach dem % kommt folgendes, in dieser Reihenfolge:

Konvertiertyp-Zeichen

d signed decimal int
o unsigned octal int
u unsigned decimal int
x unsigned hexadecimal int (with a, b,...)
X unsigned hexadecimal int (with A, B,...)
f signed real value von der Form [-]dddd.dddd
e signed real value von der Form [-]d.dddde[±]ddd
E wie e, aber mit E für Exponent
g signed real value entweder wie e oder f, abhängig vom gegebenen Wert und Präzision
G wie g, aber mit E für Exponent, wenn e-Format verwendet wird
c einzelnes Zeichen
s Character-String
% das %-Zeichen wird ausgegeben

Flag-Zeichen

Die folgenden Flag-Zeichen können in jeder Kombination und Reihenfolge auftreten.

"-" das formatierte Argument wird innerhalb des Feldes linksbündig ausgegeben; normalerweise ist die Ausgabe rechtsbündig
"+" ein positiver Wert mit Vorzeichen wird mit Pluszeichen (+) ausgegeben; normalerweise werden nur negative Werte mit Vorzeichen ausgegeben
" " ein positiver Wert mit Vorzeichen wird mit Leerzeichen am Anfang ausgegeben; wenn "+" und " " angegeben sind, überschreibt "+" die Angabe " "

Width-Specifier

Der Width-Specifier setzt die minimale Feldbreite für einen Ausgabewert.

Die Breite wird entweder direkt mit einem Dezimalstellen-String oder indirekt mit einem Stern (*) gesetzt. Wenn Sie * verwenden, legt das nächste Argument im Aufruf (das vom Typ int sein muß) die minimale Feldbreite fest.

Auf keinen Fall führt ein nicht existierendes oder zu ein kleines Feld dazu, daß ein Wert abgeschnitten wird. Wenn das Ergebnis der Konvertierung breiter ist als das Feld, wird das Feld einfach so vergrößert, daß das Ergebnis platz hat.

n Mindestens n Zeichen werden ausgegeben. Wenn der Ausgabewert weniger als n Zeichen hat, wird er mit Leerzeichen aufgefüllt (rechts wenn das "-"-Flag gesetzt ist, sonst links).
0n Mindestens n Zeichen werden ausgegeben. Wenn der Ausgabewert weniger als n Zeichen hat, wird links mit Nullen aufgefüllt.
* Die Argument-Liste liefert den Width-Specifier, der dem eigentlichen (zu formatierenden) Argument vorausgehen muß.

Präzisions-Specifier

Ein Präzisions-Specifier beginnt immer mit einem Punkt (.), um ihn von einem vorangehenden Width-Specifier zu trennen. Dann wird, wie bei "Width", die Präzision entweder direkt mit einem Dezimalstellen-String oder indirekt mit einem Stern (*) angegeben. Wenn Sie * verwenden, legt das nächste Argument im Aufruf (das vom Typ int sein muß) die Präzision fest.

keiner Präzision auf Defaultwert gesetzt.
.0 Für int-Typen, Präzision wird auf Default gesetzt; für real-Typen, kein Dezimalpunkt wird ausgegeben.
.n n Zeichen oder n Dezimalstellen werden ausgegeben. Wenn der Ausgabewert mehr als n Zeichen hat, kann er abgeschnitten oder gerundet werden (abhängig vom Typ-Zeichen).
* Die Argument-Liste liefert den Präzisions-Specifier, der dem eigentlichen (zu formatierenden) Argument vorausgehen muß.

Default-Präzisionswerte

douxX 1
eEf 6
gG alle signifikanten Stellen
c keine Auswirkung
s gesamten String ausgeben

Wie die Präzisionsangabe (.n) die Konvertierung beeinflußt

douxX .n spezifiziert daß mindestens n Zeichen ausgegeben werden. Wenn das Eingangs-Argument weniger als n Stellen hat, wird der Ausgangswert links mit Nullen aufgefüllt. Wenn das Eingangs-Argument mehr als n Stellen hat, wir die Ausgabe nicht abgeschnitten.
eEf .n spezifiziert daß n Zeichen nach dem Dezimalpunkt ausgegeben werden, und die letzte ausgegebene Stelle wird gerundet.
gG .n spezifiziert daß höchstens n signifikante Stellen ausgegeben werden.
c .n hat keinen Einfluß auf die Ausgabe.
s .n spezifiziert daß nicht mehr als n Zeichen gedruckt werden.

Beispiel

int i = 42;
real r = 3.14;
char c = 'A';
string s = "Hello";
printf("Integer: %8d\n", i);
printf("Hex:     %8X\n", i);
printf("Real:    %8f\n", r);
printf("Char:    %-8c\n", c);
printf("String:  %-8s\n", s);

Index Copyright © 1999 CadSoft Computer GmbH