博客專欄

        EEPW首頁 > 博客 > strcpy和strdup比較和詳解

        strcpy和strdup比較和詳解

        發布人:電子禪石 時間:2021-06-16 來源:工程師 發布文章

        strcpy和strdup比較和詳解

        函數和功能描述:

        ①extern char *strdup(char *s);


        頭文件:string.h


        功能: 將串拷貝到新建的位置處


        說 明:strdup不是標準的c函數。strdup()在內部調用了malloc()為變量分配內存,不需要使用返回的字符串時,需要用free()釋放相應的內存空間,否則會造成內存泄漏。

        返回值:返回一個指針,指向為復制字符串分配的空間;如果分配空間失敗,則返回NULL值。


         // strdup.c


        #include <syslib.h>


        #include <string.h>


        main() 



         char *s="Golden Global View";


        char *d;


         d=strdup(s);


        printf("%s",d);


        return 0;


        }


        ②char *strcpy(char* dest, const char *src);


        頭文件:#include <string.h>和 #include <stdio.h>


        功能:把從src地址開始且含有NULL結束符的字符串復制到以dest開始的地址空間


        說明:strcpy是標準的C語言標準庫函數。src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。


        返回值:返回指向dest的指針。


         舉例:


         // strcpy.     


              #include <syslib.h>


         #include <string.h>     


         main()


          {        


        char *s="Golden Global View";


        char d[20]; 


        printf("%s",d);       


         return 0;    


          }


        總結:

        1.strdup不是標準的c函數,strcpy是標準的c函數,使用時注意場合。

        2.strdup可以直接把要復制的內容復制給沒有初始化的指針,因為它會自動分配空間給目的指針,strcpy的目的指針一定是已經分配內存的指針。

        3.strdup用完要free()函數釋放內存,否則內存泄露 。

        4.使用strcpy必須事先確定src大小,可以先strlen判斷src的大小,之后為dest申請空間,之后再strcpy就不會有問題了。

        ————————————————


        原文鏈接:https://blog.csdn.net/koozxcv/article/details/49306751


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: strdup

        技術專區

        關閉
        主站蜘蛛池模板: 元谋县| 米林县| 皋兰县| 岳阳市| 容城县| 麟游县| 龙江县| 永清县| 迭部县| 山东省| 抚州市| 突泉县| 武穴市| 壶关县| 西林县| 大洼县| 普宁市| 焉耆| 从江县| 虹口区| 台前县| 黄陵县| 和顺县| 呼玛县| 武穴市| 永平县| 密云县| 长海县| 七台河市| 嘉定区| 宣城市| 当阳市| 内乡县| 公安县| 明光市| 阿尔山市| 文化| 东源县| 南昌市| 和硕县| 武汉市|