strncpy函數(shù)用法例子 vc 中如何將‘CString’轉(zhuǎn)換成‘char*’類型?
vc 中如何將‘CString’轉(zhuǎn)換成‘char*’類型?1. 指向未分配內(nèi)存的Const char*(lpctstr)指針。CString CSTR(ASDD)const char*ch=(lpc
vc 中如何將‘CString’轉(zhuǎn)換成‘char*’類型?
1. 指向未分配內(nèi)存的Const char*(lpctstr)指針。CString CSTR(ASDD)const char*ch=(lpctstr)CSTR ch指向與CSTR相同的地址。但是由于const用于確保ch不會被修改,所以它是安全的。指向未分配內(nèi)存的指針。CString CSTR=“asddsd”char*ch=cstr.GetBuffer命令(cstr1.GetLength()1)cstr.釋放緩沖區(qū)()//修改ch指向的值等于修改CSTR中的值。//PS:使用CH后,不要刪除,這樣會破壞CSTR的內(nèi)部空間,容易導致程序崩潰。
3。將CString值賦給所分配內(nèi)存的char*。CString cstr1=“asddsd”int STRLENGTH=cstr1。Getlength()1 char*pvalue=新字符[STRLENGTH]strncpy(pvalue,cstr1,STRLENGTH)
4。第三種用法是將CString值賦給分配的內(nèi)存char[]數(shù)組。CString cstr2=“asddsd”int STRLENGTH 1=cstr1。Getlength()1 char chray[100]memset(chray,0,sizeof(bool)*100)//清空數(shù)組的垃圾內(nèi)容。
strncpy對應什么函數(shù)?
string copy函數(shù)不同于strcpy,它有防止交叉的字符數(shù)
memcpy(DeST,SRC,count)是將DeST指示的起始內(nèi)存區(qū)域的內(nèi)容復制到SRC,DeST,SRC是void*type,返回值是void*
strncpy(DeST,SRC,count)是將DeST指示的起始內(nèi)存區(qū)域的長度復制到SRC。Dest是char*,SRC是const char*,return char*
char*P=new char[3
]P=“3”
strcpy(P,“44”)
在第一句話中,P指針指向一個長度為3的內(nèi)存區(qū)域
但是P=“3”語句重新分配P指針,它不再指向上一條語句所指的區(qū)域。相反,它應用于系統(tǒng)靜態(tài)內(nèi)存區(qū)中的一塊內(nèi)存,其內(nèi)容為“3”,并且P指針指向該內(nèi)存塊。此時,P指向的內(nèi)存是只讀的。以下對P所指內(nèi)容的修改都是錯誤strcpy和strncpy的區(qū)別在于前者復制整個指定字符串,而后者只復制指定字符串中指定數(shù)量的字符。
Strcpy相對簡單,使用strncpy可以適當控制復制的字符數(shù),因此比Strcpy更安全。