strncpy

admin 37 0

`strncpy` 是 C 语言中的一个标准库函数,用于从源字符串复制指定长度的字符到目标字符串,这个函数定义在 `string.h` 头文件中。

函数原型如下:

```c

char *strncpy(char *dest, const char *src, size_t n);

参数说明:

* `dest`:目标字符串,即要复制到的字符串。
* `src`:源字符串,即要从中复制的字符串。
* `n`:要复制的字符数。

返回值:

* 返回指向目标字符串的指针。

使用 `strncpy` 时需要注意以下几点:

1. 如果 `n` 大于源字符串的长度,那么目标字符串将会被填充为 `n - 1` 个 '\0',以防止未定义行为。
2. 如果 `n` 小于源字符串的长度,那么源字符串将会被截断,只复制 `n` 个字符。
3. 如果目标字符串的空间不足以容纳复制的字符和终止字符 '\0',那么结果未定义。
4. `strncpy` 不会自动添加终止字符 '\0',所以使用 `strncpy` 之后,需要手动添加一个 '\0' 来确保目标字符串是正确终止的。
5. 如果源字符串和目标字符串重叠,结果未定义。

示例:


```c
#include <stdio.h>
#include <string.h>

int main() {
    char src[] = "Hello, World!";
    char dest[10];
    strncpy(dest, src, 5);
    dest[5] = '\0';  // 手动添加终止字符 '\0'
    printf("src: %s\n", src);
    printf("dest: %s\n", dest);  // 输出 "Hello"
    return 0;
}