strncat ist definiert in der string
, die in C über string.h
, bzw. in C++ über cstring
eingebunden wird.
strncat() fügt einem String eine wählbare Anzahl von Zeichen von eines zweiten Strings an. Das Nullbyte des ersten Strings wird gesucht und mit dem zweiten String überschrieben. Nachdem die angebene Zahl von Zeichen des zweiten Strings kopiert wurden, wird abschließend ein neues Nullbyte gesetzt.
#include <string.h> void * strncpy( char * target, char * source, size_t size );
target: Zielspeicherblock (mindestens zusätzliche size
Byte als der bereits enthaltende String)
source: Quellspeicherblock
size: Anzahl maximal zu kopierender Bytes (Der Typ size_t
entspricht i.d.R. unsigned int))
Return value: Die Rückgabe entspricht target
.
Ist der target
-String kleiner als die Länge des bisherigen Strings und den angefügten size
Bytes, so wird in fremde Speicherbereiche geschrieben, so dass das Programm abstürzen kann oder andere Daten überschreibt, so dass das Programm beim Zugriff auf die überschriebenen Daten abstürzen kann.
#include <string.h> // definiert strncat #include <stdio.h> // definiert printf #include <stdlib.h> // definiert EXIT_SUCCESS char const * source = " World\n"; char target[20] = "Hallo"; int main( void ) { strncat( target, source, 6 ); printf( "Zusammengefügt: \"%s\"\n", target ); return EXIT_SUCCESS; }
Das Newline-Zeichen wurde nicht kopiert, so dass die Ausgabe wie folgt lautet:
Ausgabe:
Zusammengefügt: "Hallo Welt"