Bearbeiten: Ich habe die Quelle für das Beispiel hinzugefügt.
Ich bin auf dieses Beispiel gestoßen :
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 );
Welches hat diese Ausgabe erzeugt:
Ziel ist ursprünglich = 'abcdefg' Nach strcpy wird das Ziel zu '123456789'. Ziel1 ist ursprünglich = 'abcdefg' Nach strncpy wird destination1 zu '12345fg'.
Was mich wundert, warum jemand diesen Effekt haben möchte. Es sieht so aus, als wäre es verwirrend. Dieses Programm lässt mich denken, dass Sie mit Tom Bro763 grundsätzlich den Namen einer Person (z. B. Tom Brokaw) kopieren könnten.
Was sind die Vorteile der Verwendung strncpy()
gegenüber strcpy()
?
strcpy
stattdessen verwendenstrncpy
?"