使用memcpy和strncpy案例
时间: 2024-09-14 15:09:46 浏览: 41
`memcpy` 和 `strncpy` 是 C 语言标准库函数,用于内存区域的复制操作。
`memcpy` 函数用于从源内存地址复制指定数量的字节到目标内存地址。它的原型如下:
```c
void *memcpy(void *dest, const void *src, size_t n);
```
其中,`dest` 是目标地址,`src` 是源地址,`n` 是要复制的字节数。此函数不会检查目标内存是否足够大,因此使用时需确保目标内存有足够的空间来防止溢出。
示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[50];
memcpy(dest, src, sizeof(src)); // 复制sizeof(src)个字节
printf("%s\n", dest); // 输出: Hello, World!
return 0;
}
```
`strncpy` 函数用于从源字符串复制指定数量的字符到目标字符串,其原型如下:
```c
char *strncpy(char *dest, const char *src, size_t n);
```
`dest` 是目标字符串,`src` 是源字符串,`n` 是最多复制的字符数。`strncpy` 在复制时会检查目标字符串是否能够容纳 `n` 个字符,并在复制结束时在目标字符串末尾添加空字符 `\0`,即使未满 `n` 个字符也会这样做。因此,如果 `src` 字符串长度小于 `n`,`strncpy` 会在目标字符串末尾添加额外的空字符,直到总共复制了 `n` 个字符。
示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello";
char dest[10];
strncpy(dest, src, 5); // 最多复制5个字符
printf("%s\n", dest); // 输出: Hello (后面可能会有额外的空字符)
return 0;
}
```
在使用 `strncpy` 时需要注意检查目标字符串的长度,以确保不会出现未定义行为。
阅读全文