字符串复制函数strncpy()和内存拷贝函数memcpy()

#include
char *strncpy(char *dest, const char *src, unsigned long n);

功能是将指针变量src所指向的字符串复制到指针变量dest所指向的位置。而strncpy()的功能是将指针变量src所指向的字符串的前 n 个字符串复制到指针变量dest所指向的位置。只要将strcpy()掌握之后,strncpy就简单多了,关于strncpy()唯一需要注意的是如果他不是复制整个字符串,那么最后的结束标识符’\0’就不会被复制,这时候必须手动编程在后添加’\0’,否则输出时由于找不到结束符就会输出乱码,他会一直输出,直到遇到’\0’为止。

内存拷贝函数memcpy()

strcpy()只能复制字符串,但是memcpy()可以复制任何数据,因为他是内存拷贝函数,是直接操作内存空间。

#include
void *memcpy(void *dest, const void *src, unsigned long n);

功能是从指针变量src所指向的内存空间中复制 n 个字节的数据到指针变量 dest 所指向的内存空间。

1 字符数组 dest 的长度一定要大于复制的字符字节数 n,否则会产生溢出,导致相邻内存空间的数据被覆盖,这样很危险。

2 入股复制的是完整的字符串,那么字符数组 dest 的长度和复制的字节数 n 一定要考虑最后的标识符’\0’;

3 如果不是完整复制一个字符串,而是仅仅复制前面几个 字符,那么最后的标志符“\0”,就不会被复制。这个时候在输出 dest的时候,因为找不到结束符“\0”,就不会一直往后输出,直到遇到’\0’为止。

#include
#include
int main(void)
{
	char src[20] = "i love you mom";
	char dest[20] = "\0";
	memcpy(dest, src, 19);
	printf("dest = %s\n", dest);
	return 0;
}

你可能感兴趣的:(C语言,C语言学习之路)