获得字符串或数组长度有关问题

获得字符串或数组长度问题
char       *bmpdata;     全局变量

void   CFileView::OnRfile()  
{  
//function   2
CFile   file( "333.bmp ",CFile::modeRead|CFile::typeBinary);
len   =   file.GetLength();
bmpdata   =   new   char[len+1];
bmpdata[len]   =   0;
//int   Length   =   strlen(bmpdata);         如在这里获取的话     是正常的为27653
file.Read(bmpdata,len);
file.Close();

}

void   CFileView::OnFile()  
{

FileWrite(bmpdata);

}

void   CFileView::FileWrite(char       *data)
{
                 
        //int   Length   =   strlen(bmpdata);     如在这里获取的话同样是5                      
        int   Length   =   strlen(data);     //   跟踪这里的Length的值为5   没有达到目的
CFile   file( "222.bmp ",CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
file.Write(data,   Length);
file.Close();
}


如定义bmpdata   为   unsigned   char*   显示错误:
strlen   :   cannot   convert   parameter   1   from   'unsigned   char   * '   to   'const   char   * '
应该怎么改下


------解决方案--------------------
是不是你读取的文件里面有‘\0’
你可以在
file.Read(bmpdata,len);
后面再加
int Length = strlen(bmpdata);
判断一下
------解决方案--------------------
void CFileView::FileWrite(char *data ,int length)
再传一个数组大小就好了~
------解决方案--------------------
strlen是用于字符串的,而你从文件中读取的数据显然不是字符串,而是二进制的。
请记住,字符串都是以 '\0 '结尾的,如果不懂,回去看书。