Chỉnh sửa: Tôi đã thêm nguồn cho ví dụ.
Tôi đã xem qua ví dụ này :
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 );
Cái nào đã tạo ra đầu ra này:
đích ban đầu là = 'abcdefg' Sau strcpy, đích trở thành '123456789' đích1 ban đầu là = 'abcdefg' Sau strncpy, đích1 trở thành '12345fg'
Điều đó khiến tôi tự hỏi tại sao mọi người lại muốn có hiệu ứng này. Có vẻ như nó sẽ là khó hiểu. Chương trình này khiến tôi nghĩ về cơ bản bạn có thể sao chép tên của ai đó (ví dụ: Tom Brokaw) với Tom Bro763.
Lợi thế của việc sử dụng strncpy()
hơn là strcpy()
gì?
strcpy
thay vìstrncpy
?"