在写完程序时候运行中断发现读取出来的文件流放进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[]长度方法,欢迎留言交流