Warum sollten Sie strncpy anstelle von strcpy verwenden?

Edit: ich habe die Quelle für das Beispiel.

Stieß ich auf dieses Beispiel:

char source[MAX] = "123456789";
char source1[MAX] = "123456789";
char destination[MAX] = "abcdefg";
char destination1[MAX] = "abcdefg";
char *return_string;
int index = 5;

/* This is how strcpy works */
printf("destination is originally = '%s'\n", destination);
return_string = strcpy(destination, source);
printf("after strcpy, dest becomes '%s'\n\n", destination);

/* This is how strncpy works */
printf( "destination1 is originally = '%s'\n", destination1 );
return_string = strncpy( destination1, source1, index );
printf( "After strncpy, destination1 becomes '%s'\n", destination1 );

Erzeugt diese Ausgabe:

Ziel ist ursprünglich = 'abcdefg' 
Nach strcpy, Ziel wird '123456789' 

destination1 ist ursprünglich = 'abcdefg' 
Nach strncpy, destination1 wird '12345fg' 

Das macht mich Frage mich, warum jemand wollen würde diesen Effekt. Es sieht aus wie es wäre verwirrend. Dieses Programm macht mich denken, Sie könnten im Grunde Kopie über den Namen einer Person (zB. Tom Brokaw) mit Tom Bro763.

Was sind die Vorteile der Verwendung von strncpy() über strcpy()?

InformationsquelleAutor der Frage Kredns | 2009-08-11

Schreibe einen Kommentar