• 【C语法学习】25 - strncpy()函数


    1 函数原型

    strncpy():将str指向的字符串的前n个字符拷贝至dest,函数原型如下:

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

    2 参数

    strncpy()函数有三个参数src、dest和n:

    1. 参数src是指向待拷贝字符串的指针,类型为char*型;
    2. 参数dest是指向拷贝目的地的指针,类型为char*型;
    3. 参数n是拷贝的字符数量,类型为size_t(unsigned int)型。

    3 返回值

    strncpy()函数的返回值类型为char*型,返回值为dest。

    4 使用说明

    1. strcpy()函数将src指向的字符串的前n个字符拷贝至dest指向的内存空间中;
    2. 如果src指向的字符串长度小于n,strcpy()函数会在拷贝至dest的字符串末尾填充空字符’\0’,凑齐n个字符;
    3. 如果src指向的字符串长度大于n,strcpy()函数不会在拷贝至dest的字符串末尾加上空字符’\0’作为字符串的结尾。

    5 示例

    5.1 示例1

    待拷贝字符串长度小于n,代码如下所示:

    int main()
    {
       //
       char src[] = "hello world";
       char dest[20];
       //
       strncpy(dest, src, 15);
       dest[19] = '\0';
       puts(dest);
    
       return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    拷贝前dest指向的内存空间内容如下图所示:

    在这里插入图片描述

    拷贝后dest指向的内存空间内容如下图所示:

    在这里插入图片描述
    代码运行结果如下图所示:

    在这里插入图片描述

    代码及运行结果分析如下:

    1. src指向的字符串"hello world"长度小于n=15,strncpy()函数在拷贝至dest的字符串末尾填充空字符’\0’,补齐15个字符。

    5.2 示例2

    待拷贝字符串长度大于n,代码如下所示:

    int main()
    {
       //
       char src[] = "hello world";
       char dest[20];
       //
       strncpy(dest, src, 5);
       puts(dest);
    
       return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    拷贝前dest指向的内存空间内容如下图所示:

    在这里插入图片描述

    拷贝后dest指向的内存空间内容如下图所示:

    在这里插入图片描述
    代码运行结果如下图所示:

    在这里插入图片描述

    代码及运行结果分析:

    1. src指向的字符串"hello world"长度大于n=5,strncpy()函数在拷贝至dest的字符串末尾不会添加空字符’\0’。
  • 相关阅读:
    如何设计一个安全的对外接口?
    Web自动化测试--selenium
    rabbitMq安装
    【概率论】第八章 假设检验
    连续时间随机游走(Continuous-time random walk, CTRW)
    (2)多线程-线程的常用方法与生命周期
    常见场景面试题(二)
    un7.27:redis数据库常用命令。
    GeoGebra 实例 时钟
    天然气潮流计算matlab程序
  • 原文地址:https://blog.csdn.net/XDUryan/article/details/134413826