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()函数使用方式以及说明