在本教程中,我们将讨论如何在C语言编程中使用strncpy()函数。C语言中的strncpy函数用于将指定字节的字符从源文件复制到指定的目的地。它被定义在string.h头文件中,在使用该函数之前,需要将其包含在内。
基本用法
strncpy()函数与strcpy()函数类似。然而,与strcpy()不同的是,它从源字符串复制指定数量的字符到目标字符串。
strncpy()的语法如下。
char* strncpy(char *dest, const char* src, size_t n);
复制代码
函数参数
strncpy()函数接受3个参数。
- dest- 这是一个指向字符数组的指针,复制后的字符数组将存储在这里。
- src- 这个指针指向复制指定字符数组的字符数组。
- n- 要从src字符串中复制的最大字符数。
该函数从src中复制n指定的字符数到dest所指向的内存中。
如果函数收到的n的值小于src数组的长度,它将复制指定的n个字符,没有空结尾的字符。
如果n大于src数组的长度,它将把所有带有空尾字符的n个字符复制到dest。
函数的返回值
该函数返回一个指向dest数组的指针。
例1
下面的例子说明了如何使用strncpy()函数。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world!";
char dest[20];
strncpy(dest, src, sizeof(dest));
printf("Copied string: %s \n", dest);
return 0;
}
复制代码
在上面的例子程序中,我们指定源字符串的值为。"Hello, world!"。然后我们继续定义目标字符串,并使用strncpy()函数来复制源字符串的大小。
上述程序的输出如图所示。

Copied string: Hello, world!
复制代码
例2
下一个例子的实质是说明如何从源字符串中复制部分字符。例如,要复制前5个字符,我们可以这样做。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world!";
char dest[20];
strncpy(dest, src, 5);
printf("Partial string: %s \n", dest);
return 0;
复制代码
在上面的例子程序中,我们只从源字符串中复制了5个字节。由于n的值小于源字符串的长度。目标字符串不是空结尾。
例3
我们可以手动添加一个空结尾的字符,如下面的例子程序所示。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world";
char dest[10];
strncpy(dest, src, 5);
dest[5] = '\0';
return 0;
}
复制代码
在上面的例子中,我们在从源字符串复制完目标字节数后,手动添加了一个空的结束符
例4
如果你传递的n值大于源字符串的大小, strncpy()函数会从源字符串中复制所有的字符, 并为剩余的字节添加一系列的空结尾字符。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, world";
char dest[20];
strncpy(dest, src, sizeof(src)+5);
printf("Destination %s \n", dest);
return 0;
}
复制代码
总结
在本教程中,我们讨论了如何在C语言中使用strncpy()函数。使用这个函数,你可以从一个字符串中复制特定数量的字符到一个目标字符串。