c語(yǔ)言字符串復(fù)制不用strcpy 在C語(yǔ)言中如何高效地復(fù)制和連接字符串?
在C語(yǔ)言中如何高效地復(fù)制和連接字符串?提到字符串的復(fù)制和連接,我們一般會(huì)想到字符串復(fù)制函數(shù)strcpy和字符串連接函數(shù)strcat。但是在工程中一定不能用strcpy和strcat函數(shù),因?yàn)檫@兩個(gè)函數(shù)
在C語(yǔ)言中如何高效地復(fù)制和連接字符串?
提到字符串的復(fù)制和連接,我們一般會(huì)想到字符串復(fù)制函數(shù)strcpy和字符串連接函數(shù)strcat。但是在工程中一定不能用strcpy和strcat函數(shù),因?yàn)檫@兩個(gè)函數(shù)存在內(nèi)存泄露的風(fēng)險(xiǎn)。當(dāng)源字符串超過(guò)目的字符數(shù)組所能容納的空間的時(shí)候,就會(huì)內(nèi)存泄漏。我們可以用字符串復(fù)制函數(shù)strncpy和字符串連接函數(shù)strncat。
strncpy函數(shù)原型是char* strncpy(char* dest,const char* src,size_tn),功能:把src指向的字符串的前size_tn個(gè)字符拷貝到dest所指向的字符數(shù)組中,返回指向dest的指針。
strncat函數(shù)原型是 char* strncat(char* dest,const char* src,size_tn),功能:把src指向的字符串的前size_tn個(gè)字符拷貝到dest所指向的字符數(shù)組的結(jié)尾,返回指向dest的指針。
以上兩個(gè)dest指向的字符數(shù)組都要足夠容納size_tn個(gè)字符。如果是src所指向的字符串整個(gè)都拷貝過(guò)去,可以用sizeof(src)替換size_tn。用這兩個(gè)函數(shù)還要包含頭文件#include<string.h>
用C語(yǔ)言實(shí)現(xiàn)字符串拷貝函數(shù)有幾種方式?
比如下面代碼還有一個(gè)函數(shù)是memcpy,這個(gè)是內(nèi)存拷貝,原型是然后是用指針引用,注意這個(gè)并非賦值,而是引用,這種操作需要注意內(nèi)存。第三種方法就是直接賦值了