C语言strncpy()函数
描述
char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。
声明
下面是 strncpy() 函数的声明。
char *strncpy(char *dest, const char *src, size_t n)
参数
- dest -- 指向用于存储复制内容的目标数组。
- src -- 要复制的字符串。
- n -- 要从源中复制的字符数。
返回值
该函数返回最终复制的字符串。
实例
下面的实例演示了 strncpy() 函数的用法。
#include <stdio.h>
#include <string.h>
int main(void){
char dest[20] = "Hello\0Hi";
char src[6] = "World";
strncpy(dest, src,2);
printf("将src的字符串赋值到dest:%s\n",dest);
return 0;
}
打印结果:
代码分析:
1、在设置字符数组长度的时候根据字符数计算,如果字符数的长度大于字符数组的长度则编译不能通过。
2、运行后的src的字符数大于dest的字符数,虽然编译可以通过,但在运行的时候会导致缓冲区溢出的问题。
3、strncpy()函数设置要复制的字符数为2,所以只抽取了src2个字符数复制到He上面。
4、dest在遇到转义字符\0即空字符后面便不再继续输出。如果转义字符在开始定义的时候设置给src后面也是一样不再继续输出
5、关于strncpy()函数复制这一说并不严谨,个人理解可以将其看作是覆盖(overwrite)
以上就是strncpy()函数使用方式以及说明