在寫完程序時候運行中斷髮現讀取出來的文件流放進char[]後長度只有幾個字節,但是可以將這個cha[]重新寫成文件
CFile file;
char* imgbuf1= NULL; //存放圖片的char[]
file.Open(_T("1.jpg"),CFile::modeReadWrite);
const int lengthf1 = file.GetLength();
imgbuf1= new char[lengthf1]; //重定義char[]長度爲文件流長度
memset(imgbuf1, 0, sizeof(char) * lengthf1);
file.Read(imgbuf1,lengthf1);//讀取完之後imgbuf1打印會截斷,中斷也只能看到幾個字節
file.Close();
查閱資料後發現,讀取出來的二進制流會存在\0,\0在字符串中表示結束符.所以當調用打印字符串的函數或者計數的函數,都會從\0這裏截斷,只會打印或者計數\0前面的字節,所以當需要使用存放文件流的char[]時後中間不能再進行字符串的轉換
如果需要將存放文件流的char[]和其他字符串合在一起.不能使用strcpy和strcat,要重新將其他字符串放一個char[]裏,劃分一個長度更大的char[]使用memcpy將兩個char[]合在一起.如下就在文件流的前面加上"文件流是:"
char strFileconnet1 [1024] = "文件流是:";
int len1 = strlen(strFileconnet1); //純字符串的使用strlen
const int lenstr = lengthf1 + len1;
imgmsg = new char[lenstr];
memcpy(imgmsg,strFileconnet1, len1);
memcpy(imgmsg+len1,imgbuf1,sizeof(imgmsg));
但是這個char[]的長度不能再用strlen,或者sizeof了,長度就是lenstr,如果其他人有好的計算char[]長度方法,歡迎留言交流