Warum wird strncpy nicht null beendet?

strncpy() angeblich schützt vor Pufferüberläufen. Wenn jedoch ein Überlauf verhindert wird, ohne dass der Wert null endet, wird höchstwahrscheinlich eine nachfolgende Zeichenfolgeoperation überlaufen. Um mich davor zu schützen, mache ich:

strncpy( dest, src, LEN );
dest[LEN - 1] = '\0';

man strncpy gibt:

Die Funktion strncpy () ist ähnlich, außer dass nicht mehr als n Bytes src kopiert werden. Wenn es also unter den ersten n Bytes von src kein Null-Byte gibt, wird das Ergebnis nicht mit Null abgeschlossen.

Ohne null etwas scheinbar Unschuldiges zu beenden wie:

   printf( "FOO: %s\n", dest );

... könnte abstürzen.

Gibt es bessere, sicherere Alternativen zustrncpy()?

Antworten auf die Frage(11)

Ihre Antwort auf die Frage