Christian Seiler: Zahlenformatierung in C

Beitrag lesen

Hallo Martin,

Wenn die maximale Länge des formatierten Strings nicht mit Sicherheit vorhersagbar ist, dann zusätzlich einen Parameter vom Typ int, der der Formatierungsfunktion angibt, wie groß der zur Verfügung stehende Puffer ist.

Der korrekte Typ für eine Puffergröße wäre size_t anstelle von int. Oder ssize_t wenn man auch negative Werte für Fehlercodes o.ä. braucht.

Das ist ja im Prinzip auch das Verfahren, das sprintf() anwendet - nur dass sprintf() eben *nicht* überprüft, ob der Puffer ausreichend groß ist.

Weswegen es im aktuellen C-Standard auch snprintf() gibt, was die länge kontrolliert. Insofern sollte man inzwischen eigentlich immer snprintf() verwenden außer es kommt extrem auf die Performance an und man hat anderweitig sichergestellt, dass der Puffer in dem konkreten Fall immer ausreicht.

Viele Grüße,
Christian