Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

strfmon - Monetären Wert in Zeichenkette umwandeln

&pagelevel(4)&pagelevel

Definition

#include <monetary.h>

ssize_t strfmon(char *s, size_t maxsize, const char *format, ...);

Beschreibung

strfmon() schreibt gemäß der Angabe format Zeichen vom Typ Character in das Feld, auf das s zeigt. Es werden nicht mehr als maxsize Byte in das Feld geschrieben.

format ist eine Zeichenkette, die zwei Arten von Objekten enthält: einfache Zeichen, die in den Ausgabestrom kopiert werden, und Konvertierungs-Spezifikationen. Konvertierungs-Spezifikationen bewirken, dass Argumente (null, eins oder mehrere) konvertiert und formatiert werden. Falls nicht genügend Argumente für das angegebene Format vorhanden sind, ist das Ergebnis undefiniert. Sind mehr Argumente vorhanden, als im Format vorgesehen, werden die überzähligen Argumente ignoriert.

Eine Konvertierungs-Spezifikation besteht aus folgenden Elementen:

  1. einem %-Zeichen

  2. optionalen Flags

  3. einer optionalen Feldgröße

  4. einer optionalen linken Genauigkeit

  5. einer optionalen rechten Genauigkeit

  6. einem Konvertierungs-Zeichen, das bestimmt, wie konvertiert wird (Pflichtangabe)

Flags

Um die Konvertierung zu steuern, können Sie ein Flag oder mehrere der hier aufgeführten Flags angeben:

=f

Ein Gleichheitszeichen, dem ein einzelnes Zeichen f folgt. Dieses Zeichen wird als Füllzeichen bei numerischen Werten verwendet. Das Füllzeichen muss sich in einem einzigen Byte darstellen lassen, damit es nicht mit Angaben zur Feldgröße und zur Ausrichtung kollidiert. Voreingestelltes Füllzeichen ist das Leerzeichen. Dieses Flag hat keinen Einfluss auf das Auffüllen wegen einer Feldgrößen-Angabe: hierfür wird immer das Leerzeichen als Füllzeichen verwendet. Das Flag wird ignoriert, wenn keine linke Genauigkeit angegeben ist.

^

Monetäre Werte werden ohne Gruppierungszeichen formatiert. Voreingestellt ist, dass monetäre Werte mit den für die aktuelle Lokalität gültigen Gruppierungszeichen formatiert werden.

+ oder (

Steuert, wie positive und negative monetäre Werte dargestellt werden. Nur eines der beiden Zeichen + oder ( darf angegeben werden. Ist + angegeben, werden die in der aktuellen Lokalität definierten Werte für + und - verwendet (in den USA z.B. die leere Zeichenkette für positive Werte und das Zeichen - für negative Werte). Ist ( angegeben, werden negative Werte in Klammern eingeschlossen. Voreingestellt ist die Angabe +.

!

Unterdrückt das Währungszeichen in der Ausgabe.

-

Steuert die Ausrichtung. Wenn dieses Flag gesetzt ist, werden Werte in den Feldern linksbündig statt rechtsbündig ausgerichtet (d.h. rechts aufgefüllt).

Feldgröße

w

Eine Folge von Dezimalziffern, die die minimale Feldgröße in Bytes festlegt. Das Ergebnis der Konvertierung wird rechtsbündig in dem Feld abgelegt und evtl. aufgefüllt (das Ergebnis wird linksbündig abgelegt, wenn das Flag - gesetzt ist). Voreingestellt ist die Feldgröße 0.

Linke Genauigkeit

#n

Eine Folge von Dezimalziffern, der das Zeichen # vorangestellt ist. Dieser Wert gibt an, wie viele Ziffern maximal links vom Radix-Zeichen (z.B. das Komma in DM **15,20) erwartet werden. Diese Option kann dazu verwendet werden, das Ergebnis von mehreren strfmon-Aufrufen in Spalten auszurichten. Außerdem kann sie verwendet werden, um freie Positionen mit einem speziellen Zeichen aufzufüllen, wie z.B. $***123.45. Diese Option bewirkt, dass ein monetärer Wert so formatiert wird, als hätte er n Ziffern. Werden mehr als n Ziffernpositionen benötigt, wird diese Konvertierungs-Spezifikation ignoriert. Freie Ziffernpositionen werden mit dem numerischen Füllzeichen aufgefüllt (siehe Flag =f).

Falls in der aktuellen Lokalität eine Gruppierung definiert ist und die Gruppierung nicht unterdrückt wird (Flag ^), werden die Gruppierungszeichen eingefügt, bevor freie Positionen mit Füllzeichen aufgefüllt werden. Füllzeichen werden nicht gruppiert, auch dann nicht, wenn das Füllzeichen numerisch ist.

Um die Ausrichtung sicherzustellen, werden alle Zeichen wie Währungszeichen oder Minuszeichen vor oder nach der Zahl in der formatierten Ausgabe durch Leerzeichen so positioniert, dass ihre positiven und negativen Formate die gleichen Längen haben.

Rechte Genauigkeit

.p

Eine Folge von Dezimalziffern, der das Zeichen . vorangestellt ist. Dieser Wert gibt an, wie viele Ziffern rechts vom Radix-Zeichen (z.B. dem Komma in DM **15,20) erscheinen sollen. Hat p den Wert 0, entfällt auch das Radix-Zeichen. Wenn keine rechte Genauigkeit angegeben ist, wird die in der aktuellen Lokalität definierte rechte Genauigkeit verwendet. Der zu formatierende Betrag wird vor der Formatierung auf die angegebene Anzahl von Ziffern gerundet.

Konvertierungs-Zeichen

Es gibt folgende Konvertierungs-Zeichen:

i

Das Argument vom Typ double wird gemäß dem internationalen Währungsformat formatiert, das in der Lokalität definiert ist (z.B. in den USA: USD 1,234.56).

n

Das Argument vom Typ double wird gemäß dem nationalen Währungsformat formatiert, das in der Lokalität definiert ist (z.B. in den USA: $1,234.56).

%

Konvertiert zu einem %., es wird kein Argument konvertiert. Die gesamte Konver-tierungs-Spezifikation muss %% sein.

Lokalitäts-Informationen

Das Verhalten der Funktion wird durch die Kategorie LC_MONETARY der Lokalität des Programms beeinflusst. Das gilt insbesondere für das monetäre Radix-Zeichen (das ein anderes Zeichen sein kann als das numerische Radix-Zeichen, das für die LC_NUMERIC-Kate-gorie gilt), die Gruppierungszeichen, die Währungssymbole und Währungsformate. Das internationale Währungssymbol sollte dem ISO 4217:1987-Standard entsprechen.

Returnwert

Anzahl der Bytes, die in das Feld geschrieben wurden, auf das s zeigt (ohne das abschließende Nullbyte),



wenn die Gesamtzahl der geschriebenen Bytes inklusive des Nullbyte nicht größer als maxsize ist.

 

-1

sonst. Im Fehlerfall ist der Inhalt des Feldes undefiniert. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

strfmon() schlägt fehl, wenn gilt:


E2BIG

Wegen Platzmangels im Puffer wurde die Konversion abgebrochen.

Beispiel

Die folgenden Beispiele beziehen sich auf eine Lokalität in den USA und die Werte 123.45, -123.45 und 3456.781:

Konvert.-Spezifikation

Ergebnis

Kommentar

%n

$123.45

-$123.45

$3,456.78

Default-Formatierung

%11n

$123.45

-$123.45

$3,456.78

Ausrichtung rechts innerhalb eines 11 Zeichen großen Feldes

%#5n

$ 123.45

-$ 123.45 $

3,456.78

Werte bis 99,999 werden in einer Spalte ausgerichtet

%=*#5n

$***123.45

-$***123.45

$*3,456.78

Angabe eines Füllzeichens für freie Positionen

%=0#5n

$000123.45

-$000123.45

$03,456.78

Füllzeichen werden nicht gruppiert, selbst wenn das Füllzeichen eine Ziffer ist

%^#5n

$ 123.45

-$ 123.45

$  3456.78

Gruppierungszeichen unterdrücken

%^#5.0n

$ 123   

-$ 123   

$  3456   

Auf ganze Zahl runden

%^#5.4n

$ 123.4500

-$ 123.4500

$  3456.7800

Rechte Genauigkeit erhöhen

%(#5n

$ 123.45

($ 123.45)

$  3456.78

Alternative Darstellung für positive/negative Werte

%!(#5n

123.45

( 123.45)

3456.78

Währungssymbol unterdrücken

Siehe auch

localeconv(), monetary.h.