strncpy
函数是 C 语言标准库中的字符串处理函数,用于将一个字符串的指定长度部分复制到另一个字符串中。
strncpy函数头文件
strncpy
函数的头文件是<string.h>
。在使用strncpy
函数之前,确保在你的 C 代码中包含这个头文件:
#include <string.h>
strncpy函数原型
char *strncpy(char * restrict s1,
const char * restrict s2,
size_t n);
strncpy
函数将不超过n
个字符(不复制空字符'\0'
后面的字符)从s2
指向的数组复制到s1
指向的数组。如果在重叠的对象之间进行复制,则行为未定义。
如果s2
指向的数组长度是一个短于n
个字符的字符串,strncpy
会用'\0'
填充s1
指向的数组,直到总共写入n
个字符;
如果s2
指向的数组长度是一个大于或等于n
个字符的字符串,strncpy
不会自动添加'\0'
。
参数说明
s1
:目标字符串的指针,表示复制后的字符串存储的位置。s2
:源字符串的指针,表示要复制的字符串。n
:要复制的最大字符数(不一定是实际复制的字符数)。
返回值
strncpy
函数返回目标字符串的指针,也就是s1
的值;
strncpy示例代码
示例 1:复制字符串,自动填充终止符
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world!";
char dest[20];
// 目标空间足够大
// 会使用'\0'填充剩余部分
strncpy(dest, src, sizeof(dest));
printf("%s\n", dest);
return 0;
}
示例 2:手动添加终止符
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[10];
strncpy(dest, src, 5);
// 仅复制前5个字符
// 源字符串长度大于或等于n时
// strncpy不会自动添加'\0'
dest[5] = '\0'; // 需手动添加终止符
printf("%s\n", dest);
return 0;
}