char *ReadLob(CString filename)
{
char msgbody[1024];
return msgbody
}
//////////////////////////////////////////////////////////////////////////////////////////////////////<區別
int ReadLob(CString filename, char* node702_msgbody, int iSz)
{
std::ifstream file; file.open(filename);
if(!file)
{ printf("Unable to open file\n"); return -1; }
char pBuf[1024*4]; int iRead = 0, iCur = 0;
while(!file.eof())
{
file.read(pBuf,sizeof(pBuf));
iRead = file.gcount();
int iCpy = iRead+iCur >= iSz ? iSz - iCur - 1 : iRead;
strncpy(node702_msgbody+iCur, pBuf, iCpy); iCur += iCpy;
if(iCur == sizeof(node702_msgbody) - 1)
break;
}
node702_msgbody[iCur] = 0;
return 0;
}
///////////////////////////
說是第一種,指針必須是new的才可以作為返回值,不讓函數內的數組頭,作為指針返回,會出現問題,
我操作之所以沒有出現問題是因為,中沒有別的代碼來破壞之前的棧空間
可以返回CString的類型,CString可以保護起來字符串。
最好還是第二種方式
///////////////////////////
讀取字段要加入iCur來分段讀取,這樣會好些