void *memcpy(void *dest, const void *src, int n);
功能:
從源src所指的內(nèi)存地址的起始位置開始拷貝n個字節(jié)到目標dest所指的內(nèi)存地址的起始位置中。
頭文件:
#include <string.h>
返回值:
指向dest的指針。
char *strcpy(char *dest, char *src);
功能:
把src所指由'\0'結束的字符串復制到dest所指的數(shù)組中。
頭文件:
#include "string.h"
返回值:
指向dest的指針。
char * strncpy(char *dest, char *src, size_t n);
功能:
將字符串src中最多n個字符復制到字符數(shù)組dest中
返回值:
指向dest的指針。
頭文件:
#include "string.h"
memcpy說明:
1.src和dest所指內(nèi)存區(qū)域不能重疊,函數(shù)返回指向dest的指針。
2.與strcpy相比,memcpy并不是遇到'\0'就結束,而是一定會拷貝完n個字節(jié)。
3.如果目標數(shù)組destin本身已有數(shù)據(jù),執(zhí)行memcpy()后,將覆蓋原有數(shù)據(jù)(最多覆蓋n)。如果要追加數(shù)據(jù),則每次執(zhí)行memcpy后,要將目標數(shù)組地址增加到你要追加數(shù)據(jù)的地址。
//注意,src和dest都不一定是數(shù)組,任意的可讀寫的空間均可。
strcpy說明:
src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
當src串長度>dest串長度時,程序仍會將整個src串復制到dest區(qū)域,可是dest數(shù)組已發(fā)生溢出。因此會導致dest棧空間溢出以致產(chǎn)生崩潰異常。如果不考慮src串的完整性,可以把dest數(shù)組最后一元素置為NULL,從dest串長度處插入NULL截取字串。
strncpy說明:
它并不像strcpy一樣只有遇到NULL才停止復制,而是多了一個條件停止,就是說如果復制到第n個字符還未遇到NULL,也一樣停止。
如果n > dest串長度,dest棧空間溢出產(chǎn)生崩潰異常。
否則:
1)src串長度<=dest串長度,(這里的串長度包含串尾NULL字符)
如果n=(0, src串長度),src的前n個字符復制到dest中。但是由于沒有NULL字符,所以直接訪問dest串會發(fā)生棧溢出的異常情況。
如果n = src串長度,與strcpy一致。
如果n = dest串長度,[0,src串長度]處存放于desk字串,(src串長度, dest串長度]處存放NULL。
2)src串長度>dest串長度
如果n =dest串長度,則dest串沒有NULL字符,會導致輸出會有亂碼。如果不考慮src串復制完整性,可以將dest最后一字符置為NULL。
綜上,一般情況下,使用strncpy時,建議將n置為dest串長度(除非你將多個src串都復制到dest數(shù)組,并且從dest尾部反向操作),復制完畢后,為保險起見,將dest串最后一字符置NULL,避免發(fā)生在第2)種情況下的輸出亂碼問題。當然嘍,無論是strcpy還是strncpy,保證src串長度<dest串長度才是最重要的。
strncpy_s:目標空間長度不夠時,會彈出assert,使copy不能正常完成,使用時需要指定源緩沖區(qū)大小。
_s函數(shù)只是windows提供的特有函數(shù),功能比較強大,但是在有跨平臺需求的軟件中,不建議使用。
strncpy:拷貝你指定的個數(shù)或者碰到'\0',不驗證源緩沖區(qū)長度,可能造成越界。
memcpy:不理'\0',只拷貝你指定的個數(shù),故strcpy可以不指定字符串長度,實現(xiàn)整串copy,而memcpy必定要指定長度。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章題目:strcpy和strncpy用法和區(qū)別-創(chuàng)新互聯(lián)
當前網(wǎng)址:http://vcdvsql.cn/article44/ceophe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、標簽優(yōu)化、全網(wǎng)營銷推廣、網(wǎng)頁設計公司、ChatGPT、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容