我正在编写一个简单的练习来比较 memcpy 或 strncpy 的用法。我发现我可以使用以下两个函数之一执行此字符串复制:
char * strncpy ( char * destination, const char * source, size_t num );
和
void * memcpy ( void * destination, const void * source, size_t num );
简单做法
char src[] = "Hello World";
char dst[20];
strncpy(dst, src, 5);
printf("%zu-", strlen(dst));
memcpy(dst, src, sizeof(dst));
printf("%zu-", strlen(dst));
strncpy(dst, src, 5);
printf("%zu", strlen(dst));
实际输出
5-11-11
我怎样才能理解他们在尊重方面有何不同?
一般来说,如何找出使用 memcpy 或 strncpy 复制的不同内存块的相对字节?