strncpy und Verwendung von sizeof kopieren maximale Anzahl von Zeichen

Bin ich mit dem nachstehenden code

char call[64] = {'\0'} /* clean buffer */
strncpy(call, info.called, sizeof(call));

Ich immer verwenden Sie den sizeof-für das Ziel der Schutz einer überfüllung, sofern die Quelle größer als das Ziel. Auf diese Weise kann ich verhindern, dass ein Puffer-überlauf, da es nur kopieren, soweit wie das Ziel verarbeiten kann.

Aber ich bin jetzt Fragen, ob es null beenden das Ziel.

Ein paar Fälle.

1) Wenn die Quelle größer ist.
Ich konnte dies tun:

call[strlen(call) - 1] = '\0'; /* insert a null at the last element.*/

2) Wenn die Quelle kleiner ist als das Ziel.
Anruf von 64 bytes, und ich kopiere die 50 bytes mit der Größe der Quelle. Wird es automatisch in die null in der 51 element?

Vielen vielen Dank für alle Informationen,

InformationsquelleAutor ant2009 | 2009-07-24

Schreibe einen Kommentar