memcpy_s的用法
时间: 2024-05-08 16:11:26 浏览: 6
memcpy_s函数是C语言中的一个安全内存复制函数,用于将源内存区域的指定长度复制到目标内存区域。与memcpy函数不同的是,memcpy_s函数在复制时会检查目标内存区域的大小,以确保不会发生缓冲区溢出的情况。
memcpy_s函数的语法如下:
```c
errno_t memcpy_s(void *dest, size_t destsz, const void *src, size_t count);
```
其中,dest表示目标内存区域的指针,destsz表示目标内存区域的大小,src表示源内存区域的指针,count表示要复制的字节数。
如果复制成功,memcpy_s函数返回0;如果发生错误,返回一个非零的错误码。常见的错误码包括:
- EINVAL:dest、src或count参数为空,或者destsz参数小于count。
- ERANGE:目标内存区域太小,无法容纳源内存区域。
下面是一个使用memcpy_s函数的例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world!";
char dest[20];
errno_t err = memcpy_s(dest, sizeof(dest), src, strlen(src) + 1);
if (err == 0) {
printf("Copied string: %s\n", dest);
} else {
printf("Error copying string: %d\n", err);
}
return 0;
}
```
在这个例子中,我们将源字符串"Hello, world!"复制到目标字符数组dest中。由于目标字符数组的大小为20,足以容纳源字符串,因此复制成功,输出结果为"Copied string: Hello, world!"。