博客專欄

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

        strcpy和strdup比較和詳解

        發(fā)布人:電子禪石 時(shí)間:2021-06-16 來源:工程師 發(fā)布文章

        strcpy和strdup比較和詳解

        函數(shù)和功能描述:

        ①extern char *strdup(char *s);


        頭文件:string.h


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


        說 明:strdup不是標(biāo)準(zhǔn)的c函數(shù)。strdup()在內(nèi)部調(diào)用了malloc()為變量分配內(nèi)存,不需要使用返回的字符串時(shí),需要用free()釋放相應(yīng)的內(nèi)存空間,否則會(huì)造成內(nèi)存泄漏。

        返回值:返回一個(gè)指針,指向?yàn)閺?fù)制字符串分配的空間;如果分配空間失敗,則返回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結(jié)束符的字符串復(fù)制到以dest開始的地址空間


        說明:strcpy是標(biāo)準(zhǔn)的C語言標(biāo)準(zhǔn)庫函數(shù)。src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。


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


         舉例:


         // strcpy.     


              #include <syslib.h>


         #include <string.h>     


         main()


          {        


        char *s="Golden Global View";


        char d[20]; 


        printf("%s",d);       


         return 0;    


          }


        總結(jié):

        1.strdup不是標(biāo)準(zhǔn)的c函數(shù),strcpy是標(biāo)準(zhǔn)的c函數(shù),使用時(shí)注意場合。

        2.strdup可以直接把要復(fù)制的內(nèi)容復(fù)制給沒有初始化的指針,因?yàn)樗鼤?huì)自動(dòng)分配空間給目的指針,strcpy的目的指針一定是已經(jīng)分配內(nèi)存的指針。

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

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

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


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


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: strdup

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 常州市| 临沭县| 金乡县| 景泰县| 宝山区| 涿鹿县| 登封市| 庆阳市| 万荣县| 武鸣县| 承德市| 平定县| 辛集市| 成安县| 和顺县| 淳化县| 峨眉山市| 来凤县| 汝阳县| 和平县| 南丰县| 大丰市| 观塘区| 五华县| 三明市| 太原市| 梓潼县| 迁西县| 华容县| 涞水县| 正阳县| 泾阳县| 泰州市| 通许县| 饶平县| 铜梁县| 墨脱县| 龙陵县| 怀安县| 洛浦县| 会宁县|