zoukankan      html  css  js  c++  java
  • C/C++——库函数strcpy和strdup比较

    版权声明:原创文章,禁止转载。

     


    1. strcpy

     

    原型: extern char *strcpy(char *dest,char *src); 

    用法: #include <string.h> 

    功能:把src所指由 '' 结束的字符串复制到dest所指的字符数组中。

    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。

    举例: 

    #include <string.h>
    #include <stdio.h> 
    int main(void) { 
        char *src="Hello C!"; 
        char dest[10]; 
        strcpy(dest,src);
        printf("%s
    ",dest);
        return 0; 
    }

    输出:

     


    2. strdup

     

    原型: extern char *strdup(char *s); 

    用法: #include <string.h> 

    功能:复制字符串s

    说明:返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。

    举例: 

    #include <string.h> 
    #include <stdio.h> 
    #include <stdlib.h>
    
    int main(void) { 
        char *src = "Hello C!";
        char *dest = strdup(src); 
        printf("%s
    ",dest);
        free(dest);
        return 0; 
    } 

    输出:


    3. strcpy和strdup比较

    • strdup不是标准的c函数,strcpy是标准的c函数,使用时注意场合;

    • strdup可以直接把要复制的内容复制给没有初始化的指针,因为它会自动分配空间给目的指针,strcpy的目的指针一定是已经分配内存的指针;

    • strdup用完要free()函数释放内存,否则内存泄露;

    • 使用strcpy必须事先确定src大小,可以先strlen判断src的大小,之后为dest申请空间(dest的空间不小于strlen(src)+1),之后再strcpy就不会有问题了。

    strdup可以由strcpy实现如下:

    char *strdup(const char *s) { 
        char *t = NULL; 
        if(s && (t = (char*)malloc((strlen(s)+1))) {
            strcpy(t, s); 
        }  
        return t; 
    }

     参考资料:

    1. https://blog.csdn.net/jinjingwen/article/details/6314750
    2. https://blog.csdn.net/koozxcv/article/details/49306751
  • 相关阅读:
    结对项目 sport club(一)
    结对项目 sport club(三)
    结对项目 sport club(二)
    博客作业
    学生信息管理系统APP需求分析
    随机生成四则运算
    软件介绍
    利用纯css写三角形,弧度箭头,吃豆人,气泡。放大镜,标签的源码
    js中的数据类型隐式转换的三种情况
    javascript基础入门之js中的结构分支与循环语句
  • 原文地址:https://www.cnblogs.com/oddcat/p/9717326.html
Copyright © 2011-2022 走看看