• [字符串和内存函数]strcpy和strncpy的区别


    CPlus中对strcpy的介绍

    1. /* strcpy example */
    2. #include
    3. #include
    4. int main ()
    5. {
    6. char str1[]="Sample string";
    7. char str2[40];
    8. char str3[40];
    9. strcpy (str2,str1);
    10. strcpy (str3,"copy successful");
    11. printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
    12. return 0;
    13. }

    CPlus中对strncpy的介绍 

     

    1. /* strncpy example */
    2. #include
    3. #include
    4. int main ()
    5. {
    6. char str1[]= "To be or not to be";
    7. char str2[40];
    8. char str3[40];
    9. /* copy to sized buffer (overflow safe): */
    10. strncpy ( str2, str1, sizeof(str2) );
    11. /* partial copy (only 5 chars): */
    12. strncpy ( str3, str2, 5 );
    13. str3[5] = '\0'; /* null character manually added */
    14. puts (str1);
    15. puts (str2);
    16. puts (str3);
    17. return 0;
    18. }

     

    区别

    strcpy和strncpy都是C语言中的字符串拷贝函数,用于将一个字符串复制到另一个字符串数组中。它们的区别在于如下几个方面:

    参数个数:strcpy只接受两个参数,即目标字符串和源字符串,而strncpy接受三个参数,分别是目标字符串、源字符串和要拷贝的最大字符数。

    拷贝长度:strcpy会将源字符串中的所有字符都拷贝到目标字符串中,直到遇到空字符’\0’为止。而strncpy会拷贝指定长度的字符到目标字符串中,无论是否遇到空字符。

    字符串结束标志:strcpy会自动在目标字符串的末尾添加空字符’\0’作为字符串的结束标志,确保目标字符串是一个完整的字符串。

    而strncpy在以下三种情况下会在目标字符串的末尾添加空字符:

    a)当源字符串长度小于等于n时,

    b)当源字符串长度等于n且源字符串中包含空字符,

    c)当源字符串长度大于n时,但目标字符串中已经有n个字符了。

    因此,在使用strcpy时,需要保证目标字符串数组足够大以容纳源字符串的所有字符以及空字符;而在使用strncpy时,需要明确指定要拷贝的最大字符数。

     

     

  • 相关阅读:
    MySQL---触发器详解
    【Overload游戏引擎分析】画场景栅格的Shader分析
    Zookeeper3:客户端命令
    VISUAL SVN 5.6.0以上破解使用天数
    橘子学JVM之命令行监控01之jps
    ArangoDB 学习笔记(四)
    图像分割数据集的相关操作(二)—— albumentations 数据增强
    Deep Learning for Detecting Robotic Grasps
    Himall商城图形码帮助类二维码中生成图片(2)
    探索Lighthouse性能分数计算背后的奥秘
  • 原文地址:https://blog.csdn.net/caojunjia/article/details/132939862